軽量タスク

 

公開日: 2016年7月

Visual Studio 2017 RC の最新のドキュメントの詳細については、Visual Studio 2017 RC ドキュメントをご参照ください。

ここでは、同時実行ランタイムでの軽量タスクの役割について説明します。 軽量タスクは、concurrency::Scheduler オブジェクトまたは concurrency::ScheduleGroup オブジェクトから直接スケジュールするタスクです。 軽量タスクは、Windows API の CreateThread 関数に指定する関数と類似しています。 したがって、軽量タスクは、既存のコードを改変して同時実行ランタイムのスケジュール機能を使用する場合に有用です。 同時実行ランタイム自体は、非同期エージェントのスケジュールおよび非同期メッセージ ブロック間におけるメッセージの送信に、軽量タスクを使用します。

System_CAPS_ICON_tip.jpg ヒント

同時実行ランタイムには既定のスケジューラが備わっているため、アプリケーションでスケジューラを作成する必要はありません。 タスク スケジューラではアプリケーションのパフォーマンスを微調整できるため、同時実行ランタイムを初めて使用する場合は、並列パターン ライブラリ (PPL) または非同期エージェント ライブラリから始めることをお勧めします。

軽量タスクは、非同期エージェントおよびタスク グループよりもオーバーヘッドが少なくて済みます。 たとえば、軽量タスクが終了しても、ランタイムは通知を行いません。 さらに、軽量タスクからスローされた例外を、ランタイムはキャッチまたは処理しません。 例外処理および軽量タスクの詳細については、「例外処理」を参照してください。

ほとんどのタスクで、タスク グループ、並列アルゴリズムなどの、より信頼性の高い機能を使用することをお勧めします。これらを使用することにより、複雑なタスクをより基本的なタスクに簡単に分割することができるためです。 タスク グループの詳細については、「タスクの並列化」を参照してください。 並列アルゴリズムの詳細については、「並列アルゴリズム」を参照してください。

軽量タスクを作成するには、concurrency::ScheduleGroup::ScheduleTaskconcurrency::CurrentScheduler::ScheduleTask、または concurrency::Scheduler::ScheduleTask のメソッドを呼び出します。 シャットダウンするために終了したとき、親スケジューラが待機または concurrency::event オブジェクトなどの同期機構を使用する軽量タスクを待機する。


既存のコードを改変して軽量タスクを使用する方法を示した例については、「チュートリアル: 既存のコードを改変して軽量タスクを使用する」を参照してください。

参照

タスク スケジューラ
チュートリアル: 既存のコードを改変して軽量タスクを使用する