如何在C++中创建异步/等待代码
How to create async/await code in C++?
我正在使用网络服务的远程RPC,我不想在我的代码中创建任何绑定其他东西的委托。我想写伪异步代码。类似这样的东西:
await (MyServer->RemoteMethod(parameter_1, parameter_2),
[=] (int32 return_value_1, int32 return_value_2) {
UE_LOG(MyLog, Log, TEXT("RemoteMethod called with result %i %i"), return_value_1, return_value_2);
});
我不太擅长最新C++版本的函数式编程。但我知道有类似std::function
的东西。这能帮我吗?
我还需要代码必须是跨平台的。
您所描述的不是async
-await
,有了它,您就可以编写:
std::pair<int32, int32> return_values = await MyServer->RemoteMethod(parameter_1, parameter_2);
UE_LOG(MyLog, Log, TEXT("RemoteMethod called with result %i %i"), return_values.first, return_values.second);
我相信这个特性计划在未来的C++版本中出现。
您所描述的是延续,您可以使用boost::future
:
boost::future<std::pair<int32, int32>> return_values_future = MyServer->RemoteMethod(parameter_1, parameter_2);
return_values_future.then([=](boost::future<std::pair<int32, int32>> fut) {
UE_LOG(MyLog, Log, TEXT("RemoteMethod called with result %i %i"), fut.get().first, fut.get().second);
});
相关文章:
- 如何在C++中实现带有packaged_task的异步等待循环?
- C++异步编程,如何不等待未来
- 如何使用 Boost.Asio 正确实现异步/等待语法
- boost上的多个递归异步等待
- 在 UWP 应用程序中,future.wait() 在尝试同步来自异步方法的响应时继续等待
- 如果您所做的只是等待它完成,为什么要使用异步
- 如何在C++中创建异步/等待代码
- 有没有办法异步等待 Boost Asio 的未来
- 如果一个basic_waitable_timer在仍有异步操作等待的情况下被销毁,该怎么办
- 等待异步请求完成
- 异步等待,直到在Asio中有一个套接字可用于读/写
- 等待句柄/事件异步或回调在同一线程内
- c++: Boost::asio:在同一个函数中等待异步处理程序
- 使用AWS-cpp-sdk时,在退出程序之前等待异步调用返回
- 我如何执行一个c++函数异步而不是阻塞/等待
- 异步等待一个条件变量
- C++等待所有异步操作结束
- 等待异步方法完成
- 使用异步方法vs线程等待
- 等待多个异步任务完成