我很难理解这个承诺是如何与未来合作的。
我有一个函数正在返回
std::future
如本例所示:
std::future<int> calcSomeValue() {
}
我的问题是,这个未来可以通过异步生成线程来计算,也可以有一个结果已经准备好返回,所以我希望使用
std::promise
没有任何线索。但是…我不知道这是否安全,或者我还能做什么。
参见示例:
std::future<int> calcSomeValue() {
if (resultIsReady()) {
std::promise<int> promise; // on the stack
std::future<int> rv = promise.get_future(); // is future part of the memory occupied by promise?
promise.set_value(resultThatIsReady); // does it store the value in promise or in future?
return rv; // <--- What will happen when promise is lost?
}
else {
return std::async(....)
}
}
请参阅上面代码中的注释。
当
.get()
被称为承诺已经实现的地方?如果是的话,我会有一个大的嘟嘟嘟嘟在这里。
有人能告诉我怎么回去吗
STD:未来
在这种情况下?