task は抽象的な基本クラスであり、task::execute メソッドを必ずオーバーライドしなければなりません。execute メソッドは、タスクを実行するために必要なアクションを行ってから、実行する次のタスクを返すか、スケジューラーが実行する次のタスクを選択する場合は NULL を返します。NULL でない場合、返されるタスクは this のプレデセッサー・タスクの 1 つです。「タスクの再利用」セクションで説明されている再利用/再スケジュール・メソッドの 1 つが execute() メソッドの実行中に呼び出されなければ、this オブジェクトは execute メソッドがリターンした後、暗黙的に破棄されます。
コンストラクターによって割り当てられたリソースを解放する必要がある場合、仮想デストラクターをオーバーライドします。
「アフィニティー」セクションで説明されているように、note_affinity のオーバーライドは複数のタスクのキャッシュ再利用の効率を向上させます。
スレッドがタスクの実行を開始することをスケジューラーが決定すると、次のステップを行います。