我有一个API必须将未来结果(future / shared_future)返回给客户端。在某些情况下,我知道我可以多次返回“同一个未来”对象,因为我有一个关联的std :: promise,可以/应该将结果传递给多个客户端(伪代码)。
std::future<int> getVal()
{
//I have a list of promises kept
if (promiseExists)
{
//this throws an exception because get_future() can be called only one time, unfortunately
return existingPromise.get_future();
}
....
}
问题是你不能在同一个实例上多次调用get_future(),或者以某种方式从同一个promise中获取shared_future对象。
getVal有一个解决方法可以返回一个shared_future(从existingPromise.get_future()构造shared_future获得)但是在这种情况下我必须使用promise对象缓存shared_future对象,并且只需要一个promise就会更简单以某种方式能够将未来多次返回给不同客户的对象。有没有办法做到这一点?
答案 0 :(得分:3)
没有
为什么你需要保守承诺?只有结果的提供者需要承诺,结果的所有消费者只需要(共享)的未来。