問題タブ [packaged-task]
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::asyncvsstd::packaged_task)? futurereturn fromに同じ動作が適用されなかったのはなぜstd::packaged_taskですか? または、言い換えれば、同じ動作がどのように停止されるのstd::packaged_taskfutureでしょうか?
コンテキストを確認するには、次のコードを参照してください。
countdownタスクが完了するのを待ちません。ただし、コメントを外すと、返された未来を文字通りブロックしているため、// int value = ret.get();終了し、明らかです。countdown
返されたオブジェクトで使用するかどうかに関係なく、別のスレッドでstd::asyncタスクを実行するために使用すると、常にタスクが終了します。countdownget()future
c++ - エラー: 「Packaged_Task::」から引数 1 を変換できません' を 'std::nullptr_t' に
次のプログラムは、明示的なコンストラクターに関連するエラーのようです。しかし、私はそれを見つけることができません。
Visual Stduio 2017 を使用すると、ビルド時に次のエラーが発生します。