与条件信号机制一样,我希望一个任务等到收到某个信号或某个变量变为真。 提升lib提供了这种机制,但TBB没有。
如何在TBB中实施此案例?
答案 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节)