Share via


タスク スケジューラ (同時実行ランタイム)

ドキュメントのこの部分のトピックでは、同時実行ランタイムのタスク スケジューラの重要な機能について説明します。タスク スケジューラは、同時実行ランタイムを使用する既存のコードのパフォーマンスを微調整する場合に便利です。

重要 : 重要

タスク スケジューラは Windows ストア アプリケーションでは使用できません。詳細については、「C++ における Windows ストア アプリ用の非同期操作の作成」を参照してください。

ヒントヒント

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

タスク スケジューラは、実行時にタスクをスケジュールおよび調整します。タスクは、特定のジョブを実行する作業の単位です。通常、タスクは他のタスクと並列に実行できます。たとえば、タスク グループ項目、並列アルゴリズム、および非同期エージェントにより実行される作業はすべてタスクです。

タスク スケジューラは、複数のコンピューティング リソースのあるコンピューターでの効率的なタスク スケジューリングに関連する詳細を管理します。タスク スケジューラは、基になるオペレーティング システムの最新機能も使用します。このため、同時実行ランタイムを使用するアプリケーションは、機能を拡張したハードウェアを自動的に調整しその性能を向上させます。

プリエンプティブ スケジューリング メカニズムと協調スケジューリング メカニズムの違いについては、「同時実行ランタイムとその他の同時実行モデルの比較」で説明しています。タスク スケジューラは、協調スケジューリングとワーク スティーリング アルゴリズム、およびオペレーティング システムのプリエンプティブ スケジューラを併用して、処理リソースを最大限に活用します。

同時実行ランタイムは既定のスケジューラを提供しているため、インフラストラクチャの詳細を管理する必要はありません。そのため、通常、タスク スケジューラを直接使用することはありません。ただし、アプリケーションの品質ニーズを満たすために、タスク スケジューラを使用して、独自のスケジューリング ポリシーを用意したり、スケジューラを特定のタスクに関連付けたりすることができます。たとえば、4 つまでのプロセッサに対応した並列並べ替えルーチンを考えてみます。スケジューラ ポリシーを使用して、最大で 4 つの同時実行タスクを生成するスケジューラを作成できます。このスケジューラで並べ替えルーチンを実行すると、他のアクティブ スケジューラで残りの処理リソースを使用できるようになります。

関連トピック

タイトル

説明

スケジューラ インスタンス

スケジューラ インスタンスについて説明し、concurrency::Scheduler クラスと concurrency::CurrentScheduler クラスを使用してスケジューラ インスタンスを管理する方法を示します。明示的なスケジューリング ポリシーを特定の種類の作業負荷に関連付ける場合は、スケジューラ インスタンスを使用します。

スケジューラ ポリシー

スケジューラ ポリシーの役割について説明します。スケジューラでタスクの管理時に適用される方法を制御する場合は、スケジューラ ポリシーを使用します。

スケジュール グループ

スケジュール グループの役割について説明します。関連するタスクのグループが同一プロセッサ ノードでの実行によって恩恵を受ける場合など、タスク間で高いレベルの局所性が求められる場合は、スケジュール グループを使用します。

軽量タスク

軽量タスクの役割について説明します。軽量タスクは、既存のコードを改変して同時実行ランタイムのスケジュール機能を使用する場合に有用です。

コンテキスト

コンテキスト、concurrency::wait 関数、および concurrency::Context クラスの役割について説明します。コンテキストをブロック、ブロック解除、および譲渡するタイミングを制御する必要がある場合や、アプリケーションでオーバーサブスクリプションを有効にする場合は、この機能を使用します。

メモリ管理関数

concurrency::Alloc 関数と concurrency::Free 関数について説明します。これらの関数を使用して、同時実行方式でメモリの割り当ておよび解放を行うと、メモリのパフォーマンスが向上します。

同時実行ランタイムとその他の同時実行モデルの比較

プリエンプティブ スケジューリング メカニズムと協調スケジューリング メカニズムの違いについて説明します。

並列パターン ライブラリ (PPL)

アプリケーションで各種の並列パターン (たとえば、並列アルゴリズム) を使用する方法について説明します。

非同期エージェント ライブラリ

アプリケーションで非同期エージェントを使用する方法について説明します。

同時実行ランタイム

並列プログラミングを容易にする同時実行ランタイムについて説明します。また、関連トピックへのリンクを示します。