设置临时std::future的值

问题描述 投票:0回答:1

我有一个函数,返回一个 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++ multithreading asynchronous future
1个回答
0
投票

我不知道你想达到什么效果,但你可以使用一个 "未来 "函数。std::promise 的值,直接设置一个 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);

© www.soinside.com 2019 - 2024. All rights reserved.