1

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

4

1 回答 1

3

不。

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

于 2013-01-08T17:03:33.847 回答