CurrentScheduler クラス
呼び出し元コンテキストに関連付けられている現在のスケジューラの抽象化を表します。
構文
class CurrentScheduler;
メンバー
パブリック メソッド
名前 | 説明 |
---|---|
作成 | _Policy パラメーターによって動作が記述された新しいスケジューラを作成し、呼び出し元のコンテキストにアタッチします。 新しく作成されたスケジューラは、呼び出し元コンテキストの現在のスケジューラになります。 |
CreateScheduleGroup | 過負荷です。 呼び出し元のコンテキストに関連付けられているスケジューラ内に新しいスケジュール グループを作成します。 _Placement パラメーターを受け取るバージョンによって、新しく作成されたスケジュール グループ内のタスクは、そのパラメーターで指定された場所で実行されるようにバイアスがかかります。 |
[デタッチ] | 現在のスケジューラを呼び出し元のコンテキストからデタッチし、以前アタッチされたスケジューラを現在のスケジューラとして復元します (それが存在する場合)。 このメソッドの復帰後、呼び出し元のコンテキストは、CurrentScheduler::Create メソッドまたは Scheduler::Attach メソッドを使用して以前コンテキストにアタッチされていたスケジューラによって管理されます。 |
Get | 呼び出し元のコンテキストに関連付けられているスケジューラ (現在のスケジューラとも呼ばれます) へのポインターを返します。 |
GetNumberOfVirtualProcessors | 呼び出し元のコンテキストに関連付けられているスケジューラに対する仮想プロセッサの現在の数を返します。 |
GetPolicy | 現在のスケジューラが作成されたポリシーのコピーを返します。 |
Id | 現在のスケジューラの一意識別子を返します。 |
IsAvailableLocation | 指定された場所が現在のスケジューラ上で使用できるかどうかを判断します。 |
RegisterShutdownEvent | 現在のコンテキストに関連付けられているスケジューラがシャットダウンし、自身を破棄したときに、_ShutdownEvent パラメーターで渡された Windows イベント ハンドルに通知します。 イベントに通知された時点で、スケジューラにスケジュールされていたすべての作業が完了します。 このメソッドでは、複数のシャットダウン イベントを登録できます。 |
ScheduleTask | 過負荷です。 呼び出し元のコンテキストに関連付けられているスケジューラ内の軽量タスクをスケジュールします。 軽量タスクは、ランタイムによって決定されるスケジュール グループ内に配置されます。 パラメーター _Placement を取るバージョンでは、指定された場所でタスクが実行されるようにバイアスがかかります。 |
解説
呼び出し元のコンテキストに関連付けられているスケジューラ (Scheduler に関するページを参照) が存在しない場合、CurrentScheduler
クラス内の多くのメソッドによって、プロセスの既定のスケジューラがアタッチされます。 これは、このような呼び出し中に、プロセスの既定のスケジューラが作成されることを意味する場合もあります。
継承階層
CurrentScheduler
要件
ヘッダー: concrt.h
名前空間: concurrency
作成
_Policy
パラメーターによって動作が記述された新しいスケジューラを作成し、呼び出し元のコンテキストにアタッチします。 新しく作成されたスケジューラは、呼び出し元コンテキストの現在のスケジューラになります。
static void __cdecl Create(const SchedulerPolicy& _Policy);
パラメーター
_Policy
新しく作成されたスケジューラの動作を説明するスケジューラ ポリシー。
解説
スケジューラが呼び出し元のコンテキストにアタッチされると、参照カウントがスケジューラに暗黙的に配置されます。
Create
メソッドを使用してスケジューラが作成されたら、スケジューラをシャットダウンできるようにするために、将来のある時点で CurrentScheduler::Detach メソッドを呼び出す必要があります。
このメソッドが、別のスケジューラに既にアタッチされているコンテキストから呼び出された場合、既存のスケジューラは以前のスケジューラとして記憶され、新しく作成されたスケジューラが現在のスケジューラになります。 その後、CurrentScheduler::Detach
メソッドを呼び出すと、以前のスケジューラが現在のスケジューラとして復元されます。
このメソッドは、scheduler_resource_allocation_error や invalid_scheduler_policy_value など、さまざまな例外をスローする可能性があります。
CreateScheduleGroup
呼び出し元のコンテキストに関連付けられているスケジューラ内に新しいスケジュール グループを作成します。 _Placement
パラメーターを受け取るバージョンによって、新しく作成されたスケジュール グループ内のタスクは、そのパラメーターで指定された場所で実行されるようにバイアスがかかります。
static ScheduleGroup* __cdecl CreateScheduleGroup();
static ScheduleGroup* __cdecl CreateScheduleGroup(location& _Placement);
パラメーター
_Placement
スケジュール グループ内のタスクが実行されるようにバイアスがかかる場所への参照。
戻り値
新しく作成されたスケジュール グループへのポインター。 この ScheduleGroup
オブジェクトには、初期参照カウントが配置されています。
解説
呼び出し元のコンテキストにスケジューラが現在関連付けられていない場合、このメソッドを呼び出すと、プロセスの既定のスケジューラが作成されるか、または呼び出し元コンテキストにアタッチされます。
Release メソッドは、スケジュール グループに対するスケジュール作業の完了時に、スケジュール グループ上で呼び出す必要があります。 スケジュール グループのキューに登録されているすべての作業が完了したら、そのスケジュール グループはスケジューラによって破棄されます。
このスケジューラを明示的に作成した場合は、スケジューラ上でご自身の参照をリリースする前に、現在のコンテキストをスケジューラからデタッチして、その中にあるスケジュール グループへのすべての参照をリリースする必要があることに注意してください。
[デタッチ]
現在のスケジューラを呼び出し元のコンテキストからデタッチし、以前アタッチされたスケジューラを現在のスケジューラとして復元します (それが存在する場合)。 このメソッドの復帰後、呼び出し元のコンテキストは、CurrentScheduler::Create
メソッドまたは Scheduler::Attach
メソッドを使用して以前コンテキストにアタッチされていたスケジューラによって管理されます。
static void __cdecl Detach();
解説
Detach
メソッドは、スケジューラから参照カウントを暗黙的に削除します。
スケジューラが呼び出し元のコンテキストにアタッチされていない場合、このメソッドを呼び出すと、scheduler_not_attached 例外がスローされます。
スケジューラ内部で管理されているコンテキスト、または scheduler::Attach または CurrentScheduler:: Create メソッド以外のメソッドを使ってアタッチされたコンテキストから、このメソッドを呼び出すと、improper_scheduler_detach 例外がスローされます。
Yammer の入手
呼び出し元のコンテキストに関連付けられているスケジューラ (現在のスケジューラとも呼ばれます) へのポインターを返します。
static Scheduler* __cdecl Get();
戻り値
呼び出し元のコンテキストに関連付けられているスケジューラ (現在のスケジューラ) へのポインター。
解説
呼び出し元のコンテキストにスケジューラが現在関連付けられていない場合、このメソッドを呼び出すと、プロセスの既定のスケジューラが作成されるか、または呼び出し元コンテキストにアタッチされます。 このメソッドによって返される Scheduler
オブジェクト上では、追加の参照が配置されません。
GetNumberOfVirtualProcessors
呼び出し元のコンテキストに関連付けられているスケジューラに対する仮想プロセッサの現在の数を返します。
static unsigned int __cdecl GetNumberOfVirtualProcessors();
戻り値
スケジューラが呼び出し元のコンテキストに関連付けられている場合は、そのスケジューラの仮想プロセッサの現在の数。それ以外の場合は、値 -1
。
解説
呼び出し元のコンテキストがまだスケジューラに関連付けられていない場合、このメソッドによってスケジューラはアタッチされません。
このメソッドからの戻り値は、呼び出し元のコンテキストに関連付けられているスケジューラに対する仮想プロセッサの数の瞬間的なサンプリングです。 この値は、返された瞬間に古くなる可能性があります。
GetPolicy
現在のスケジューラが作成されたポリシーのコピーを返します。
static SchedulerPolicy __cdecl GetPolicy();
戻り値
現在のスケジューラが作成されたポリシーのコピー。
解説
呼び出し元のコンテキストにスケジューラが現在関連付けられていない場合、このメソッドを呼び出すと、プロセスの既定のスケジューラが作成されるか、または呼び出し元コンテキストにアタッチされます。
Id
現在のスケジューラの一意識別子を返します。
static unsigned int __cdecl Id();
戻り値
スケジューラが呼び出し元のコンテキストに関連付けられている場合は、そのスケジューラの一意識別子。それ以外の場合は、値 -1
。
解説
呼び出し元のコンテキストがまだスケジューラに関連付けられていない場合、このメソッドによってスケジューラはアタッチされません。
IsAvailableLocation
指定された場所が現在のスケジューラ上で使用できるかどうかを判断します。
static bool __cdecl IsAvailableLocation(const location& _Placement);
パラメーター
_Placement
現在のスケジューラに照会する場所への参照。
戻り値
_Placement
引数で指定された場所が現在のスケジューラで使用できるかどうかを示す値。
解説
呼び出し元のコンテキストがまだスケジューラに関連付けられていない場合、このメソッドによってスケジューラはアタッチされません。
戻り値は、指定された場所が使用可能かどうかの瞬間的なサンプリングです。 複数のスケジューラが存在する場合は、動的リソース管理によって、任意の時点でスケジューラのリソースの追加または削除が可能です。 これが発生した場合、指定された場所の可用性が変わる可能性があります。
RegisterShutdownEvent
現在のコンテキストに関連付けられているスケジューラがシャットダウンし、自身を破棄したときに、_ShutdownEvent
パラメーターで渡された Windows イベント ハンドルに通知します。 イベントに通知された時点で、スケジューラにスケジュールされていたすべての作業が完了します。 このメソッドでは、複数のシャットダウン イベントを登録できます。
static void __cdecl RegisterShutdownEvent(HANDLE _ShutdownEvent);
パラメーター
_ShutdownEvent
現在のコンテキストに関連付けられているスケジューラがシャットダウンし、自身を破棄したときに、ランタイムによって通知される Windows イベント オブジェクトへのハンドル。
解説
スケジューラが呼び出し元のコンテキストにアタッチされていない場合、このメソッドを呼び出すと、scheduler_not_attached 例外がスローされます。
ScheduleTask
呼び出し元のコンテキストに関連付けられているスケジューラ内の軽量タスクをスケジュールします。 軽量タスクは、ランタイムによって決定されるスケジュール グループ内に配置されます。 パラメーター _Placement
を取るバージョンでは、指定された場所でタスクが実行されるようにバイアスがかかります。
static void __cdecl ScheduleTask(
TaskProc _Proc,
_Inout_opt_ void* _Data);
static void __cdecl ScheduleTask(
TaskProc _Proc,
_Inout_opt_ void* _Data,
location& _Placement);
パラメーター
_Proc
軽量タスクの本体を実行するために実行する関数へのポインター。
_Data
タスクの本体にパラメーターとして渡されるデータへの void ポインター。
_Placement
軽量タスクが実行されるようにバイアスがかかる場所への参照。
解説
呼び出し元のコンテキストにスケジューラが現在関連付けられていない場合、このメソッドを呼び出すと、プロセスの既定のスケジューラが作成されるか、または呼び出し元コンテキストにアタッチされます。