スレッド

インテル® スレッディング・ビルディング・ブロック (インテル® TBB) は、C++11 標準規格に基づく、プラットフォームのネイティブスレッドのラッパーを提供します。これらのラッパーを使用する利点は 2 つあります。

「名前空間」セクションで説明したように、ライブラリーは、tbb 名前空間ではなく std 名前空間にラッパーを定義します。

C++11 と大幅に異なる点を次の表に示します。

C++11 とインテル® TBB スレッドクラスの違い

C++11

インテル® 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 )

std::thread::id は、std::hash テンプレート・クラスと一緒にハッシュできます。

std::thread::id は、tbb::tbb_hash_compare および tbb::tbb_hash テンプレート・クラスと一緒にハッシュできます。

rvalue 参照引数

引数はプレーン値に変更、または関数を削除。

std::thread のコンストラクターの引数の数は任意。

std::thread のコンストラクターの引数の数は 0-3。

スレッドが joinable() の場合、std::thread のデストラクターは terminate() を呼び出します。

スレッドが joinable() の場合、std::thread のデストラクターは detach() を呼び出します。

ほかの変更点は、C++03 標準規格またはインテル® TBB との互換性に関連しています。例えば、引数の数が任意のコンストラクターには、C++11 の可変個引数テンプレート機能が必要です。

注意

スレッドはほとんどのシステムにとって重い処理であり、システムで非常に多くのスレッドを実行すると、パフォーマンスが大幅に低下します。実用性を重視する場合は、代わりにタスクベースのソリューションを使用することを検討してください。

関連情報