std :: promise通知多个客户端

时间:2013-01-08 16:38:07

标签: c++ multithreading c++11 future

我有一个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就会更简单以某种方式能够将未来多次返回给不同客户的对象。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:3)

没有

为什么你需要保守承诺?只有结果的提供者需要承诺,结果的所有消费者只需要(共享)的未来。