IExecutionResource::CurrentSubscriptionLevel メソッド

アクティブ化された仮想プロセッサ ルートの数と、この実行リソースが表す基になるハードウェア スレッドに現在関連付けられているサブスクライブされた外部スレッドの数を返します。

virtual unsigned int CurrentSubscriptionLevel() const =0;

戻り値

現在のサブスクリプション レベル。

解説

サブスクリプション レベルは、ハードウェア スレッドに関連付けられている実行中のスレッド数を表します。 対象になるのは、サブスクライブされたスレッドの形式でリソース マネージャーによって認識されるスレッドと、スレッド プロキシをアクティブに実行している仮想プロセッサ ルートのみです。

ISchedulerProxy::SubscribeCurrentThread メソッドを呼び出すか、ISchedulerProxy::RequestInitialVirtualProcessors メソッドを doSubscribeCurrentThread パラメーターの値に true を設定して呼び出すと、ハードウェア スレッドのサブスクリプション レベルが 1 つインクリメントされます。 さらに、サブスクリプションを表す IExecutionResource インターフェイスが返されます。 対応する IExecutionResource::Remove の呼び出しで、ハードウェア スレッドのサブスクリプション レベルが 1 つデクリメントされます。

IVirtualProcessorRoot::Activate メソッドを使用して仮想プロセッサ ルートをアクティブ化すると、ハードウェア スレッドのサブスクリプション レベルが 1 つインクリメントされます。 アクティブ化された仮想プロセッサ ルートに対して IVirtualProcessorRoot::Deactivate メソッドまたは IExecutionResource::Remove メソッドを呼び出すと、サブスクリプション レベルが 1 つデクリメントされます。

リソース マネージャーは、スケジューラ間でリソースを移動する際のタイミングを判断する方法の 1 つとしてサブスクリプション レベル情報を使用します。

必要条件

ヘッダー: concrtrm.h

名前空間: concurrency

参照

関連項目

IExecutionResource 構造体