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