Intel TBB使用的线程数

时间:2010-09-24 11:05:34

标签: multithreading parallel-processing tbb

英特尔TBB如何选择用于并行部分的线程数?

是否有某种规格可用?

3 个答案:

答案 0 :(得分:19)

从TBB 2.2版开始,任务调度程序将自动初始化,并在运行时处理要使用的线程数,如果您手动想要更改该数字,则可以使用以下方法之一:

创建调度程序时,可以将线程数指定为

tbb::task_scheduler_init init(nthread);

否则你可以使用

tbb::task_scheduler_init init(tbb::task_scheduler_init::automatic);

在这种情况下,tbb调度程序会创建与CPU内核一样多的线程

答案 1 :(得分:11)

让TBB决定池中的线程数是建议的选项 - 它通常会创建与计算机上的逻辑CPU一样多的工作线程 - 请参阅Class reference for tbb::task_scheduler_init

在任何给定时间找出存在多少工作线程或正在执行任务并不容易 - 这是一个深思熟虑的设计选择。来自Intel's TBB Parallel Programming Course

  

我如何知道有多少线程可用?

     

不要问!

     
      
  • 甚至调度程序也不知道确实有多少线程   可用
  •   
  • 机器上可能正在运行其他进程
  •   
  • 例程可以嵌套在其他并行例程中
  •   

答案 2 :(得分:0)

Documetation说“仅依赖于硬件配置”。可能只有可用的CPU内核数量。