要件
max_threads 値は、下記の表の 1 つでなければなりません。
効果
max_threads==task_scheduler_init::deferred の場合は何も起きず、task_scheduler_init オブジェクトはインアクティブのままです。その他の場合、task_scheduler_init オブジェクトは次のようにアクティブ化されます。スレッドにほかのアクティブな task_scheduler_init オブジェクトがない場合、スレッドはタスク・オブジェクトのスケジュールに必要な内部スレッド固有のリソースを割り当てます。アクティブな task_scheduler_init オブジェクトを含むスレッドがまだない場合、下記の表で説明されているように内部ワーカースレッドが作成されます。これらのワーカースレッドは、タスク・スケジューラーで必要になるまでスリープしています。スケジューラーによって作成された各ワーカースレッドは、task_scheduler_init オブジェクトを暗黙的にアクティブにします。
インテル® TBB 3.0 の時点では、max_threads 引数が別々の呼び出しスレッドで異なることは意味があります。例えば、スレッド A が max_threads=3 を指定してスレッド B が max_threads=7 を指定した場合、A は 2 つのワーカースレッドに制限されますが、B は 6 つまでのワーカースレッドを扱うことができます。ワーカースレッドは A と B で共有される可能性があるため、スケジューラーによって作成されるワーカースレッドの合計は 6 になります。
一部の実装では、必要な数よりも多くのワーカースレッドを作成します。ただし、必要ない場合はスリープしたままです。
オプションの thread_stack_size 引数は、ワーカースレッドのスタックサイズを指定します。値 0 は、デフォルトのスタックサイズを使用するように指定します。最初のアクティブな task_scheduler_init がすべてのワーカースレッドのスタックサイズを決定します。