軽量タスク
このドキュメントでは、同時実行ランタイムでの軽量タスクの役割について説明します。 軽量タスクは、concurrency::Scheduler
オブジェクトまたは concurrency::ScheduleGroup
オブジェクトから直接スケジュールするタスクです。 軽量タスクは、Windows API の CreateThread 関数に提供する関数に似ています。 したがって、軽量タスクは、既存のコードを改変して同時実行ランタイムのスケジュール機能を使用する場合に有用です。 同時実行ランタイム自体は、軽量タスクを使用して非同期エージェントをスケジュールし、非同期メッセージ ブロック間でメッセージを送信します。
ヒント
コンカレンシー ランタイムには既定のスケジューラが用意されているため、アプリケーションにスケジューラを作成する必要はありません。 タスク スケジューラを使用すると、アプリケーションのパフォーマンスを微調整できるため、同時実行ランタイムを初めて使用する場合は、並列パターン ライブラリ (PPL) または非同期エージェント ライブラリから始めることをお勧めします。
軽量タスクでは、非同期エージェントやタスク グループよりもオーバーヘッドが少なくなります。 たとえば、軽量タスクの完了時にランタイムから通知されません。 さらに、ランタイムは、軽量タスクからスローされる例外をキャッチまたは処理しません。 例外処理と軽量タスクの詳細については、「例外処理」を参照してください。
ほとんどのタスクでは、複雑なタスクをより基本的なタスクに簡単に分割することができるため、タスク グループや並列アルゴリズムなどのより堅牢な機能を使用することをお勧めします。 タスク グループの詳細については、タスクの並列処理に関する記事を参照してください。 並列アルゴリズムの詳細については、「並列アルゴリズム」を参照してください。
軽量タスクを作成するには、concurrency::ScheduleGroup::ScheduleTask、concurrency::CurrentScheduler::ScheduleTask、または concurrency::Scheduler::ScheduleTask メソッドを呼び出します。 軽量タスクが完了するまで待つには、親スケジューラがシャットダウンするまで待つか、または concurrency::event オブジェクトなどの同期メカニズムを使用します。
例
既存のコードを軽量タスクを使用するように改変する方法を示す例については、「チュートリアル: 既存のコードを改変して軽量タスクを使用する」をご覧ください。