future
とshared_future
の違いは何ですか?
future
の代わりにshared_future
を使用する必要がありますか?futureとshared_futureの違いは何ですか?
私はC++ 11のこれらの2つの機能を対照する良い文書を見つけようとしていましたが、Web上で答えを見つけられませんでした。
これは
future
オブジェクトは一度だけget()
のために照会することができ違いの私の現在の理解です。shared_future
は何回でも照会できます。
ユースケース:複数のスレッドが非同期タスクの結果に依存している場合 は、その後、我々はshared_future
を使用する必要があります。 将来のオブジェクトを同じスレッドで複数回クエリする必要がある場合は、代わりにshared_future
を使用する必要があります。
どれ詳細は、落とし穴や一般的なガイドラインは、これら二つの将来のタイプの動機は、セマンティクスを移動するタイプ、および移動を返すための新しいC++ 11の機能のみを移動するために戻って
shared_futureのRはcopyConstructibleでなければならないだけでなく、実際にコピーされます。将来はとしてアクセスはコピーを作成せず、移動することはありません。 これは、デフォルトではの方が早いので、もっと早く使用することを意味し、そうする必要があるときはshared_future を使用してください。正しい? –
@Ajeet:これは、実際には、 'future'と' shared_future'の命名を思いついた正確な推論です。最初は 'unique_future'と' shared_future'があり、どちらが "デフォルト"であるべきかについて多くの議論がありました。どちらがデフォルトになっていても、 "将来"という名前にする必要があります。この決定がなされた時点で、移動セマンティクスはまだC++委員会にとっては非常に新しく、よく理解されていませんでした。私は、C++委員会に「未来」のより簡単な名前を「unique_future」に割り当てるという信念の賢明な飛躍を信じています。 –