Intel Threading Building Blocks
マルチCPU・マルチコアCPUを搭載したコンピュータ上でCPUリソースを効率よく利用することが目的であり、シングルCPU・シングルコアCPUでは性能向上は期待できない(スレッド切り替えのオーバーヘッドで逆にパフォーマンスが低下する可能性もある)。
公式に動作サポートされているハードウェアはIntel製のx86系プロセッサファミリーおよび互換プロセッサである。また公式に動作サポートされているオペレーティングシステム (OS) はWindows、Linux、macOS、Androidであり、それぞれのOSで実行させるために必要な外部ライブラリが別途提供される。Intelによらないコミュニティサポートのプラットフォームとしては、ARMアーキテクチャやFreeBSDなども含まれる。
過去にはSolarisやXbox 360などへの対応も行われていた。
TBBバージョン2018 Update 4のリリースノートには、サポート環境に関して以下のように記載されている。
ハードウェア(推奨) Microsoft Windows Intel Coreプロセッサーファミリー Intel Xeonプロセッサーファミリー Intel Xeon Phiプロセッサーファミリー Linux Intel Coreプロセッサーファミリー Intel Xeonプロセッサーファミリー Intel Xeon Phiプロセッサーファミリー OS X Intel Coreプロセッサーファミリー Android Intel Atomプロセッサーファミリー
サポートされる解析ツール Intel(R) VTune(TM) Amplifier XE 2017, 2018. Intel(R) Inspector XE 2017, 2018. Intel(R) Advisor XE 2017, 2018.
リリースノートで必要条件とされているシステムよりグレードの低いシステムでTBBを実行した結果については特に明示されていないが、Pentium III・Celeron Mなどでも正常動作が確認されている例がある。
ライブラリの構成は
タスクスケジューラ (Task Scheduler)
並列処理アルゴリズム
スレッドセーフなコンテナ
ミューテックスなどの同期プリミティブ
スレッドセーフなアロケータ
パフォーマンス測定用クラス
この内、タスクスケジューラおよびアロケータはTBBをサポートするクラスなので一般に開発者が使うことは少ない。
並列処理アルゴリズムはタスクスケジューラによって処理を分割してリソースに割り当てる。その為、コンテナやミューテックスなどを利用するときはタスクスケジューラの初期化は不要である。 また細分化する際の目安となるグレインサイズをプログラマが指定することも、TBBのランタイムライブラリが自動的に設定するようにすることも可能である。
アシスタントクラス blocked_rangeクラス 線形範囲を示すクラス アルゴリズムやコンテナ走査に使用される blocked_range2dクラス 2次元範囲を示すクラス blocked_rangeクラスと同様にアルゴリズムやコンテナ走査に使用される simple_partitionerクラス 範囲を限界まで再帰的に細分化するようグレインサイズを設定する blocked_range/blocked_range2dクラスと共に使用される auto_partitionerクラス タスクスケジューラの挙動を元に最適なグレインサイズを設定する blocked_range/blocked_range2dクラスと共に使用される
同期プリミティブ atomicクラス アトミック操作を行う spin_mutexクラス スピンロックを使うミューテックス spin_rw_mutexクラス 複数のスレッドからアクセス可能なspin_mutex queuing_mutexクラス スケーラブルなミューテックス queuing_rw_mutexクラス 複数のスレッドからアクセス可能なqueuing_mutex mutexクラス OSのミューテックスと同様なミューテックス
パフォーマンス測定 tick_countクラス 時間取得