タスク・スケジューラーは、多くのフォークがある fork-join 並列処理で最も効率良く動作します。タスクスチールは、スレッドを稼動状態で保つように幅優先の動作を実行できるので、さらにワークをスチールする必要がある状況になるまで、深さ優先で実行できます。
タスク・スケジューラーは、速度向上を目的に設計されているため、単純ではありません。直接使用する場合は、parallel_for テンプレートや parallel_reduce テンプレートなど、よりハイレベルなインターフェイスの背後に隠すと良いでしょう。いくつか覚えておくと良いことを次に紹介します。
allocation_method が task クラスの割り当てメソッドの 1 つである場合、常に new(allocation_method) T を使用してタスクを割り当てます。task のローカル・インスタンスまたはファイルスコープ・インスタンスは作成しません。
allocate_additional_child_of を使用していない限り、兄弟の実行が開始される前に、兄弟を割り当てます。
継続渡し、スケジューラーのバイパス、タスクの再利用を活用して、パフォーマンスを最大限に引き出します。
タスクが完了し、再実行と表記されていない場合、そのタスクは自動的に破棄されます。また、そのサクセサーの参照カウントがデクリメントされ、ゼロに到達した場合、そのサクセサーは自動的に生成されます。