インテル® スレッディング・ビルディング・ブロック (インテル® TBB) は、C++11 Working Draft N3000 に基づく、プラットフォームのネイティブスレッドのラッパーを提供します。 これらのラッパーを使用する利点は 2 つあります。
複数のプラットフォームにわたって可搬性があるスレッドコードを作成できる。
ISO C++11 スレッドに後から容易に移行できる。
「名前空間」セクションで説明したように、ライブラリーは、tbb 名前空間ではなく std 名前空間にラッパーを定義します。
N3000 と大幅に異なる点を次の表に示します。
|
N3000 |
インテル® TBB |
|---|---|
|
template<class Rep, class Period> std::this_thread::sleep_for( const chrono::duration<Rep, Period>& rel_time) |
std::this_thread::sleep_for( tick_count::interval_t ) |
|
rvalue 参照パラメーター |
パラメーターはプレーン値に変更、または関数を削除。 |
|
std::thread のコンストラクターの引数の数は任意。 |
std::thread のコンストラクターの引数の数は 0-3。 |
ほかの変更点は、現在の C++ 標準規格またはインテル® TBB との互換性に関連しています。 例えば、引数の数が任意のコンストラクターには、C++11 の variadic テンプレート機能が必要です。
スレッドはほとんどのシステムにとって重い処理であり、システムで非常に多くのスレッドを実行すると、パフォーマンスが大幅に低下します。 実用性を重視する場合は、代わりにタスクベースのソリューションを使用することを検討してください。