如何在使用线程构建模块(TBB)时修改线程调度行为?

时间:2010-03-09 00:32:33

标签: c++ tbb

有没有人知道如何在使用TBB时修改线程调度(特别是亲和力)?对简单的并行应用程序进行高级分析,似乎TBB以降低性能的方式指定底层线程的亲和性。具体来说,我正在运行的核心启用了超线程,看起来TBB正在将线程关联到同一个核心,即使有一个不同的核心完全卸载了。

FWIW,我意识到TBB可能正在做“正确的事情”,改变线程的亲和力只会降低性能。我只想试一试,看看是不是真的如此。

1 个答案:

答案 0 :(得分:2)

TBB 2.1添加了一个关联分区程序,它根据缓存关联性将任务分配给线程。使用此分区而不是默认的might help out。您还可以深入了解各个任务并使用tbb::task::set_affinity(文档here)。如果tbb::task的子类实现note_affinity()回调,则调度程序可以通知您,如果任务恰好在其亲缘关系指示的线程上运行。