我正在我的应用程序std::async
的C++
一部分中使用一个来做一个heavy transaction
,如果网络出现问题,这可能需要很长时间。因此,我使用了std::async
结合std::future
等待超时设置,这样可以避免在事务需要很长时间时挂断电话。每次用户单击某个按钮时都会调用它UI
。
我的这段C++
代码在 4 个不同的平台上使用,即iOS, Android, OSX & Windows
. 以下是我std::async
用来执行此繁重操作的方式。
//Do the operation in async
std::future<size_t> my_future_result(std::async(std::launch::async, [this]() {
size_t result = someHeavyFunctionCall();
return result;
}));
//try to get the status of the operation after a time_out
std::future_status my_future_status = my_future_result.wait_for(std::chrono::milliseconds(some_time_out));
if (my_future_status == std::future_status::timeout) {
std::cout << "it times out every alternate time on ios only" << std::endl;
}
else if (my_future_status == std::future_status::ready) {
if (my_future_result.get() > 0)
//we are all fine
}
上述std::async & std::future_status
技术适用于所有平台。仅在 上iOS
,我遇到一个问题,即future
用户每次单击按钮时都会超时。
在我使用的方式上有什么我应该纠正的std::async & std::future_status
吗?可能有什么问题?我已经尝试过很多次搜索。std::async
除了尚未为所有平台准备好的信息外,我没有得到任何其他信息。我遇到了一个问题std::async
吗iOS
?
我是这种async+futures
基于C++
编程的新手。做,让我知道我是否在这里犯了明显的错误