1

将来の結果 (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 オブジェクトをキャッシュする必要があります。どういうわけか、さまざまなクライアントに複数回未来を返すことができます。これを行う方法はありますか?

4

1 に答える 1

3

いいえ。

なぜ約束を守る必要があるのですか?結果のプロバイダーだけが promise を必要とし、結果のすべてのコンシューマーは (共有された) 未来のみを必要とします。

于 2013-01-08T17:03:33.847 に答える