【发布时间】:2011-04-12 13:40:26
【问题描述】:
像条件信号机制一样,我希望一个任务等到收到某个信号或某个变量变为真。 Boost lib 提供了这种机制,但 TBB 没有。
如何在TBB中实现这个案例?
【问题讨论】:
标签: multithreading boost-thread tbb
像条件信号机制一样,我希望一个任务等到收到某个信号或某个变量变为真。 Boost lib 提供了这种机制,但 TBB 没有。
如何在TBB中实现这个案例?
【问题讨论】:
标签: multithreading boost-thread tbb
您使用的是非常旧的 TBB 吗?
让任务“等待”是 TBB 过去处理不好的事情,但当前的 TBB news 包含以下内容:
ISO C++ 线程类 - 一种轻薄的可移植性 围绕操作系统线程的包装器。它是 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 节)
【讨论】: