効果
task_scheduler_init オブジェクトがインアクティブの場合は何も起きません。その他の場合、task_scheduler_init オブジェクトは次のように非アクティブにされます。スレッドにほかのアクティブな task_scheduler_init オブジェクトがない場合、スレッドはタスク・オブジェクトのスケジュールに必要な内部スレッド固有のリソースを解除します。 既存のスレッドにアクティブな task_scheduler_init オブジェクトがない場合、内部ワーカースレッドは終了します。
要件
task_scheduler_init オブジェクトがインアクティブであること。
効果
コンストラクターに似ています。
要件
task_scheduler_init オブジェクトがアクティブであること。
効果
task_scheduler_init オブジェクトを破棄しないで非アクティブ化します。その結果については、デストラクターの説明を参照してください。
戻り値: task_scheduler_init がデフォルトで作成するワーカースレッドの数 +1。
戻り値: *this が「task_scheduler_init クラス」セクションで説明されているようにアクティブな場合は true、アクティブでない場合は false。
インテル® TBB は、OpenMP* との混在使用をサポートしています。2 つの並列処理が入れ子になっている場合、OpenMP* またはインテル® TBB を単体で使用したときよりもパフォーマンスは多少低くなります。
タスク・スケジューラーを使用する OpenMP* 並列領域はインテル® TBB にとって未知の新しいスレッドを作成するため、並列領域の内部で task_scheduler_init を作成する必要があります。これらの新しい OpenMP スレッドはそれぞれ、ネイティブスレッドのように、インテル® TBB のアルゴリズムを使用する前に task_scheduler_init オブジェクトを作成しなければなりません。次に例を示します。
void OpenMP_Calls_TBB( int n ) { #pragma omp parallel { task_scheduler_init init; #pragma omp for for( int i=0; i<n; ++i ) { ...task クラスまたは インテル® TBB アルゴリズムを使用 ... } } }