【发布时间】:2020-08-21 23:49:30
【问题描述】:
我有一个返回std::pair<std::future<bool>,std::future_status> 的函数。在某些情况下,我希望future.get() 始终返回true,我想知道是否有合法的方法可以做到这一点。目前我正在做一些可怕的事情:
std::future<bool> tmp = std::async(std::launch::async,[]()->bool{return true;});
return std::make_pair(std::move(tmp), std::future_status::ready);
有人知道将 tmp 的值设置为 true 的更好方法吗?
【问题讨论】:
-
``` std::promise
tmpPromise; //默认构造promise std::future tmp = tmpPromise.get_future(); //获取与promise关联的future tmpPromise.set_value(true); //设置未来值```其实是一个很好的答案(谁贴出来然后又删了。)。它是同步的,并且可能占用较少的资源。 -
我贴出来了。在我的计算机上执行它时,我一直收到错误消息。我想在给出明确答案之前对其进行调试。
-
我编译了它,它可以在我的机器上运行。必须在服务器上对其进行测试,但我认为它应该与平台无关。
-
我将取消删除答案
标签: c++ multithreading asynchronous future