首页 > 解决方案 > 设置临时 std::future 的值

问题描述

我有一个返回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 的更好方法吗?

标签: c++multithreadingasynchronousfuture

解决方案


我不确定您要达到什么效果,但是您可以使用 astd::promise直接设置 a 的值std::future

#include<future>

std::promise<bool> tmpPromise; //default construct promise

std::future<bool> tmp = tmpPromise.get_future(); //get future associated with promise

tmpPromise.set_value(true); //set future value

return std::make_pair(tmp, std::future_status::ready);


推荐阅读