次の方法で共有


IVirtualProcessorRoot::Activate メソッド

実行コンテキスト インターフェイス pContext に関連付けられているスレッド プロキシに、この仮想プロセッサ ルートでの実行を開始させます。

virtual void Activate(
   _Inout_ IExecutionContext * pContext
) =0;

パラメーター

  • pContext
    この仮想プロセッサ ルートでディスパッチされる実行コンテキストへのインターフェイス。

解説

実行コンテキスト インターフェイス pContext にスレッド プロキシが関連付けられていない場合、リソース マネージャーによってスレッド プロキシが供給されます。

Activate メソッドは、リソース マネージャーから返された新しい仮想プロセッサ ルートで処理の実行を開始するとき、または、非アクティブ化された (あるいは非アクティブ化されようとしている) 仮想プロセッサ ルート上でスレッド プロキシを再開するときに使用します。 非アクティブ化の詳細については、IVirtualProcessorRoot::Deactivate のトピックを参照してください。 非アクティブ化された仮想プロセッサ ルートを再開する場合、pContext パラメーターは、仮想プロセッサ ルートを非アクティブ化するときに使用したパラメーターと一致している必要があります。

仮想プロセッサ ルートの初回アクティブ化後、それに続く一対の呼び出し (DeactivateActivate) は、互いに前後する場合があります。 つまり、対となる Deactivate の呼び出しの前に、Activate の呼び出しを受け取ることも、リソース マネージャーには許容されています。

仮想プロセッサ ルートをアクティブ化すると、その仮想プロセッサ ルートが現在ビジー状態である、という信号をリソース マネージャーに送ることになります。 スケジューラは、このルート上で実行する作業を見つけることができなかった場合、Deactivate メソッドを呼び出して、その仮想プロセッサ ルートがアイドル状態であることをリソース マネージャーに伝える必要があります。 リソース マネージャーは、このデータを使用してシステムの負荷を分散します。

引数 pContext が NULL 値を持つ場合、invalid_argument がスローされます。

引数 pContext によって表される実行コンテキストが、この仮想プロセッサ ルートによって最後にディスパッチされた実行コンテキストと一致しない場合、invalid_operation がスローされます。

仮想プロセッサ ルートをアクティブ化すると、基になるハードウェア スレッドのサブスクリプション レベルが 1 つ増加します。 サブスクリプション レベルの詳細については、「IExecutionResource::CurrentSubscriptionLevel」を参照してください。

必要条件

ヘッダー: concrtrm.h

名前空間: concurrency

参照

関連項目

IVirtualProcessorRoot 構造体

IVirtualProcessorRoot::Deactivate メソッド

IExecutionResource::CurrentSubscriptionLevel メソッド