問題タブ [std-future]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - std::future が std::packaged_task と std::async から返されるのが異なるのはなぜですか?
future
から戻った理由には、将来のデストラクタで発生したstd::async
特別な共有状態があることを知りました。wait on returned future
しかし、 を使用するstd::pakaged_task
と、その future は同じ動作を示しません。パッケージ化されたタスクを完了するには、 からオブジェクトを明示的に呼び出す必要がget()
ありfuture
ますpackaged_task
。
今私の質問は次のとおりです。
- 将来の内部実装は何ですか (思考
std::async
vsstd::packaged_task
)? future
return fromに同じ動作が適用されなかったのはなぜstd::packaged_task
ですか? または、言い換えれば、同じ動作がどのように停止されるのstd::packaged_task
future
でしょうか?
コンテキストを確認するには、次のコードを参照してください。
countdown
タスクが完了するのを待ちません。ただし、コメントを外すと、返された未来を文字通りブロックしているため、// int value = ret.get();
終了し、明らかです。countdown
返されたオブジェクトで使用するかどうかに関係なく、別のスレッドでstd::async
タスクを実行するために使用すると、常にタスクが終了します。countdown
get()
future