Ghi*_*ita 2 c++ asynchronous future c++11
您可以拥有这样的异步API
std::future<int> GetAsync()
Run Code Online (Sandbox Code Playgroud)
有些情况下,例如您已经缓存了结果,并希望返回使用结果初始化的未来.是否有一种方法可以使用当前标准(或提议)来实现这一目标,而无需重复创建额外的std :: promise或进行额外的异步(启动策略延迟)?
编辑
还要考虑基于GetAsync()函数本地的某些状态计算结果的情况,以及如果选择在启动策略延迟时选择使用std :: async,则需要捕获可能的值
Jon*_*ely 10
我显然误解了一些事情,为什么你不能这样做:
std::future<int> GetAsync()
{
if (/*already got result*/)
{
std::promise<int> p;
p.set_value(/*result*/);
return p.get_future();
}
return std::async(/*whatever is needed*/);
}
Run Code Online (Sandbox Code Playgroud)
创建承诺有什么问题?如果你想从未来(异步返回对象)获得结果,你需要一个异步提供者,a promise就是这样一种类型.
| 归档时间: |
|
| 查看次数: |
566 次 |
| 最近记录: |