TBB介紹

介紹

這篇教程教你怎樣使用Intel的Threading Building Blocks(Intel TBB),它是一個庫幫助你利用多核提高性能,你不需要是個線程專家,這個項目可能首先看似使人畏懼,但是通常你只需要知道一些關鍵點就能利用多核處理器來改善你的代碼。例如,通過只閱讀這篇文檔的3.4節,你就能成功實現多線程程序。隨着你的專業知識的增長,你可能想要投入到更加複雜的項目中,這些都覆蓋在更高級的章節中。

優點

有許多辦法都可以做到並行化,從依賴平臺線程原語(例如,pthread)到外來的新語言,TBB的優點是它工作在高階中,而且不需要外部語言或者編譯器,你能使用任何支持ISO C++的編譯器。TBB不同於傳統線程包如下:

  • Intel TBB替你指定合理的並行,代替自己線程化。大多數線程包需要你指定線程。直接對線程編程是冗長的並且導致無效的編程,因爲線程是低階的,需要接近硬件的重構造,直接利用線程編程強迫你把邏輯任務映射到線程中,相反,Intel TBB 運行時庫自動把邏輯並行映射到現在中,有效利用處理器資源。
  • Intel TBB目標是性能。大多數通用線程包支持許多不同種線程,例如異步事件線程,結果,通用包趨向提夠基礎的低階工具,而不是解決方案。替代,Intel TBB關注並行計算密集工作的目的,傳遞高階,更簡單的解決方案。
  • Intel TBB和其他線程包兼容。因爲庫沒有設計解決所有線程問題,它能和其他線程包無縫共處。
  • Intel TBB強調可擴展,數據並行編程。把程序分成獨立的函數塊,把獨立的線程分配給每個函數塊是一個解決方案,但是這樣擴展性不好,因爲函數塊的數量是固定的。相反,Intel TBB強調數據並行編程,使多個線程工作在數據集中不同部分,數據並行編程擴展性很好,處理器數量變大會把數據集分成更小的片段。利用數據並行編程,當你增加處理器時,程序性能也提高。
  • Intel TBB依賴泛型編程。傳統的庫接口依據指定類型或者基類,而TBB使用泛型編程,泛型編程的本質是利用最少的約束寫出最好的算法。C++的STL就是一個泛型編程很好的例子,接口是根據所需類型指定的。

編譯

命令行編譯debug:
這裏寫圖片描述
把_debug去掉就是編譯release。

初始化和終結TBB庫

Intel TBB2.2自動初始化任務調度,參考文檔描述怎樣使用類task_scheduler_init顯示初始化任務調度,顯示初始化有以下好處:

  • 控制任務調度什麼時候構造,什麼時候析構。
  • 指定任務調度所使用的線程數。
  • 指定工作線程的堆棧大小。
發佈了27 篇原創文章 · 獲贊 26 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章