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