2

像条件信号机制一样,我希望一项任务等到收到某个信号或某个变量变为真。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 回答