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