2

条件付きシグナルメカニズムのように、あるシグナルが受信されるか、ある変数が真になるまで、1つのタスクを待機させたいと思います。Boost libはこのメカニズムを提供しますが、TBBは提供しませんでした。

このケースをTBBで実装するにはどうすればよいですか?

4

1 に答える 1

4

非常に古い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を参照)

于 2011-04-12T18:12:33.447 に答える