1

我正在我的应用程序std::asyncC++一部分中使用一个来做一个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::asynciOS

我是这种async+futures基于C++编程的新手。做,让我知道我是否在这里犯了明显的错误

4

0 回答 0