IScheduler::NotifyResourcesExternallyIdle メソッド
配列 ppVirtualProcessorRoots 内の一連の仮想プロセッサ ルートによって表されるハードウェア スレッドが、他のスケジューラによって使用されていないことをこのスケジューラに通知します。
virtual void NotifyResourcesExternallyIdle(
_In_reads_(count) IVirtualProcessorRoot ** ppVirtualProcessorRoots,
unsigned int count
) =0;
パラメーター
ppVirtualProcessorRoots
他のスケジューラがアイドル状態になっているハードウェア スレッドに関連付けられている、IVirtualProcessorRoot インターフェイスの配列。count
配列内の IVirtualProcessorRoot インターフェイスの数。
解説
特定のハードウェア スレッドが、複数のスケジューラに同時に割り当てられる場合があります。 その原因の 1 つとして考えられるのは、システムのハードウェア スレッドが不足しているため、リソースを共有せずにすべてのスケジューラに最低限の並行性を保証できないことです。 もう 1 つの原因として考えられるのは、リソースを所有するスケジューラがリソースを使用していない (そのハードウェア スレッド上のすべての仮想プロセッサ ルートが非アクティブ化される) 場合、そのリソースが一時的に他のスケジューラに割り当てられることです。
ハードウェア スレッドのサブスクリプション レベルは、ハードウェア スレッドに関連付けられているサブスクライブ済みのスレッドとアクティブ化済みの仮想プロセッサ ルートの数によって表されます。 特定のスケジューラから見ると、ハードウェア スレッドの外部サブスクリプション レベルは、他のスケジューラが関与するサブスクリプションの部分になっています。 ハードウェア スレッドの外部サブスクリプション レベルが前の正の値から 0 に下がったときに、リソースが外部的にビジーになっていることがスケジューラに通知されます。
この方法による通知は、MinConcurrency ポリシー キーの値が MaxConcurrency ポリシー キーの値と等しいポリシーを持つスケジューラにのみ送られます。 スケジューラ ポリシーの詳細については、「SchedulerPolicy」を参照してください。
通知を受け取る資格のあるスケジューラは、そのスケジューラが作成されたときに最初の一連の通知を取得します。これによって、スケジューラが割り当てられたリソースが外部的にビジー状態であるかアイドル状態であるかが通知されます。
必要条件
ヘッダー: concrtrm.h
名前空間: concurrency