将来の結果 (future/shared_future) をクライアントに返さなければならない API があります。結果を複数のクライアント (疑似コード) に配信できる/配信する必要がある関連付けられた 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 オブジェクトをキャッシュする必要があります。どういうわけか、さまざまなクライアントに複数回未来を返すことができます。これを行う方法はありますか?