問題タブ [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.

0 投票する
3 に答える
867 参照

c++ - std::future が std::packaged_task と std::async から返されるのが異なるのはなぜですか?

futureから戻った理由には、将来のデストラクタで発生したstd::async特別な共有状態があることを知りました。wait on returned futureしかし、 を使用するstd::pakaged_taskと、その future は同じ動作を示しません。パッケージ化されたタスクを完了するには、 からオブジェクトを明示的に呼び出す必要がget()ありfutureますpackaged_task

今私の質問は次のとおりです。

  1. 将来の内部実装は何ですか (思考std::asyncvs std::packaged_task)?
  2. futurereturn fromに同じ動作が適用されなかったのはなぜstd::packaged_taskですか? または、言い換えれば、同じ動作がどのように停止されるのstd::packaged_task futureでしょうか?

コンテキストを確認するには、次のコードを参照してください。

countdownタスクが完了するのを待ちません。ただし、コメントを外すと、返された未来を文字通りブロックしているため、// int value = ret.get();終了し、明らかです。countdown

返されたオブジェクトで使用するかどうかに関係なく、別のスレッドでstd::asyncタスクを実行するために使用すると、常にタスクが終了します。countdownget()future