問題タブ [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++ - Concurrent Wrapper で C++ packaged_task がハングする
Herb Sutter が講演「C++ and Beyond 2012」で紹介した並行ラッパーを実装しています。
基本的には、オブジェクトをラップし、 operation を使用して FIFO 順でスレッドセーフなアクセスを提供するという考え方です()
。ただし、一部の実行では (常に発生するとは限りません)、次のプログラムがハングしました。
ただし、メソッドを明示的に呼び出さなくてもプログラムは正しく動作しget()
ます。
何が問題になる可能性がありますか?何か間違ったことを実装しましたか?「f.get() を呼び出す前に packaged_task を呼び出す必要があります。そうしないと、将来の準備が整わないため、プログラムがフリーズします。」という投稿がここにあることに気付きました。これは本当ですか?はいの場合、どうすればこの問題を解決できますか?
-std=c++1z -pthread
withを使用してコードをコンパイルしていましたG++ 6.1
c++ - VS で packaged_task のコピー コンストラクターが必要な理由
次のように、packaged_task 内にオブジェクト インスタンスをラップします。
「エラー C2280: 'MoveOnlyOperation::MoveOnlyOperation(const MoveOnlyOperation &)': 削除された関数を参照しようとしています」
C++ 11 のドキュメントには、packaged_task 内のインスタンスを完全転送できると書かれています。また、clangに問題はありません。
packaged_task の実装方法または VS 2015 のバグについて定義された実装があります ( http://rextester.com/WBEH22233で同じ問題が発生するため、おそらく後で)
c++11 - packaged_tasks のキューを参照として渡す際のコンパイル エラー
packaged_task オブジェクトを含むキューを参照としてスレッドに渡そうとすると、コンパイル エラーが発生します。関数に渡すようにサンプル コードを変更したところ、同じコンパイル エラーが発生しました。