条件付きシグナルメカニズムのように、あるシグナルが受信されるか、ある変数が真になるまで、1つのタスクを待機させたいと思います。Boost libはこのメカニズムを提供しますが、TBBは提供しませんでした。
このケースをTBBで実装するにはどうすればよいですか?
条件付きシグナルメカニズムのように、あるシグナルが受信されるか、ある変数が真になるまで、1つのタスクを待機させたいと思います。Boost libはこのメカニズムを提供しますが、TBBは提供しませんでした。
このケースをTBBで実装するにはどうすればよいですか?
非常に古いTBBを使用していますか?
タスクを「待機」させることは、TBBがこれまでうまく処理できなかったことですが、現在のTBBニュースには次の内容が含まれています。
ISO C ++スレッドクラス–OSスレッドの薄いポータブルラッパー。これは、ISO C ++ 200xクラススレッドの近似値です( http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2691.pdfのセクション30.2 )。TBBでは、状況に応じて、タスクベースとスレッドベースのどちらが最適かを選択できます。次のように、「作業」が計算よりも実際に待機している場合、スレッドは通常、タスクよりも優れています。
* GUI, I/O or network interface threads. * Threads that need to wait on external events. * Programs that previously needed to use both native threads and Intel® TBB tasks.
つまり、TBBのタスク並列処理は普遍的な万能薬ではなく、I/O用の「従来の」スレッドモデルのようなものが必要になることを認めています。実際、最新のリファレンスマニュアルを確認すると、 TBBに条件変数が含まれていることがわかります。(セクション8.4を参照)