2010-09-24 68 views

回答

18

由於TBB版本2.2的任務調度器會被自動初始化和運行時的照顧要使用的線程數量,如果想手動更改號碼,就可以使用以下方法之一:

當您創建調度程序,你可以指定線程數爲

tbb::task_scheduler_init init(nthread); 

;否則可以使用

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

在這種情況下, tbb調度程序創建與CPU核心一樣多的線程

+1

你必須在此之後保持'tbb :: task_scheduler_init'對象的存活,否則它將恢復爲自動。 – 2015-04-04 13:09:47

+2

此外,任務調度程序對象僅影響從當前線程啓動的TBB作業。從另一個線程創建更多作業時,需要另一個'tbb :: task_scheduler_init'。 – 2015-05-24 18:29:23

0

Documetation表示「僅依賴於硬件配置」。可能它只是可用的CPU內核數量。

9

讓TBB決定池中的線程數是推薦的選項 - 它通常會創建與計算機上的邏輯CPU一樣多的工作線程 - 請參閱Class reference for tbb::task_scheduler_init

這並不容易找出許多工作線程是如何存在的或在任何給定時間執行任務 - 這是一個經過深思熟慮的設計選擇。從Intel's TBB Parallel Programming Course

如何知道有多少個線程可用?

不要問!

  • 甚至沒有調度知道有多少線程真的是 提供
  • 有可能是機器
  • 例程可以被嵌套在其他並行程序內運行的其他進程