为什么英特尔TBB不提供像boost这样的条件变量?

时间:2011-04-12 13:40:27

标签: multithreading boost-thread tbb

与条件信号机制一样,我希望一个任务等到收到某个信号或某个变量变为真。 提升lib提供了这种机制,但TBB没有。

如何在TBB中实施此案例?

1 个答案:

答案 0 :(得分:4)

您使用的是旧TBB吗?

任务“等待”是TBB过去处理不好的事情,但目前的TBB news包含这个:

  

ISO C ++线程类 - 轻薄便携式   围绕OS线程的包装器。它是   近似于ISO C ++   200x级线程(第30.2节)   http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2691.pdf)。   现在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的“传统”线程模型。事实上,如果你检查最新的reference manual,你会发现TBB现在包含条件变量! (见8.4节)