IResourceManager 構造体
コンカレンシー ランタイムのリソース マネージャーに対するインターフェイスです。 これは、スケジューラがリソース マネージャーと通信する際に使用されるインターフェイスです。
構文
struct IResourceManager;
メンバー
パブリック列挙型
名前 | 説明 |
---|---|
IResourceManager::OSVersion | オペレーティング システムのバージョンを表す列挙型。 |
パブリック メソッド
名前 | 説明 |
---|---|
IResourceManager::CreateNodeTopology | ランタイムのデバッグ ビルドにのみ存在するこのメソッドは、構成と一致する実際のハードウェアを必要とせずに、さまざまなハードウェア トポロジでの Resource Manager のテストを容易にすることを目的としたテスト フックです。 ランタイムの製品ビルドでは、このメソッドは何もアクションを実行せずに制御を戻します。 |
IResourceManager::GetAvailableNodeCount | Resource Manager が使用できるノードの数を返します。 |
IResourceManager::GetFirstNode | Resource Manager によって定義された列挙の順番で最初のノードを返します。 |
IResourceManager::Reference | Resource Manager インスタンスの参照カウントをインクリメントします。 |
IResourceManager::RegisterScheduler | スケジューラを Resource Manager に登録します。 スケジューラが登録されたら、返される ISchedulerProxy インターフェイスを使用して Resource Manager と通信する必要があります。 |
IResourceManager::Release | Resource Manager インスタンスの参照カウントをデクリメントします。 Resource Manager は、参照カウントが 0 になると破棄されます。 |
解説
CreateResourceManager 関数を使用して、シングルトン Resource Manager インスタンスへのインターフェイスを取得します。 このメソッドは、Resource Manager の参照カウントをインクリメントします。Resource Manager を使い終わったら、IResourceManager::Release メソッドを呼び出して参照を解放する必要があります。 通常、作成する各スケジューラは、作成時にこのメソッドを呼び出し、シャットダウン後に Resource Manager への参照を解放します。
継承階層
IResourceManager
要件
ヘッダー: concrtrm.h
名前空間: concurrency
IResourceManager::CreateNodeTopology メソッド
ランタイムのデバッグ ビルドにのみ存在するこのメソッドは、構成と一致する実際のハードウェアを必要とせずに、さまざまなハードウェア トポロジでの Resource Manager のテストを容易にすることを目的としたテスト フックです。 ランタイムの製品ビルドでは、このメソッドは何もアクションを実行せずに制御を戻します。
virtual void CreateNodeTopology(
unsigned int nodeCount,
_In_reads_(nodeCount) unsigned int* pCoreCount,
_In_reads_opt_(nodeCount) unsigned int** pNodeDistance,
_In_reads_(nodeCount) unsigned int* pProcessorGroups) = 0;
パラメーター
nodeCount
シミュレートされているプロセッサ ノードの数。
pCoreCount
各ノードのコア数を指定する配列。
pNodeDistance
2 つのノード間のノード距離を指定する行列。 このパラメーターには、値 NULL
を指定できます。
pProcessorGroups
各ノードが属するプロセッサ グループを指定する配列。
解説
nodeCount
パラメーターに値 0
が渡された場合、または pCoreCount
パラメーターの値が NULL
の場合、invalid_argument がスローされます。
プロセスに他のスケジューラが存在するときにこのメソッドが呼び出されると、invalid_operation がスローされます。
IResourceManager::GetAvailableNodeCount メソッド
Resource Manager が使用できるノードの数を返します。
virtual unsigned int GetAvailableNodeCount() const = 0;
戻り値
Resource Manager が使用できるノードの数。
IResourceManager::GetFirstNode メソッド
Resource Manager によって定義された列挙の順番で最初のノードを返します。
virtual ITopologyNode* GetFirstNode() const = 0;
戻り値
Resource Manager によって定義された列挙の順番で最初のノード。
IResourceManager::OSVersion 列挙型
オペレーティング システムのバージョンを表す列挙型。
enum OSVersion;
IResourceManager::Reference メソッド
Resource Manager インスタンスの参照カウントをインクリメントします。
virtual unsigned int Reference() = 0;
戻り値
結果として得られる参照カウント。
IResourceManager::RegisterScheduler メソッド
スケジューラを Resource Manager に登録します。 スケジューラが登録されたら、返される ISchedulerProxy
インターフェイスを使用して Resource Manager と通信する必要があります。
virtual ISchedulerProxy *RegisterScheduler(
_Inout_ IScheduler* pScheduler,
unsigned int version) = 0;
パラメーター
pScheduler
登録するスケジューラへの IScheduler
インターフェイス。
version
スケジューラが Resource Manager との通信に使用している通信インターフェイスのバージョン。 バージョンを使用すると、Resource Manager は通信インターフェイスを進化させることができ、スケジューラは古い機能へのアクセスを取得できます。 Visual Studio 2010 に存在する Resource Manager の機能を使用するスケジューラは、バージョン CONCRT_RM_VERSION_1
を使用する必要があります。
戻り値
Resource Manager がスケジューラに関連付けた ISchedulerProxy
インターフェイス。 スケジューラは、このインターフェイスを使用して、この時点から Resource Manager と通信する必要があります。
解説
このメソッドを使用して、Resource Manager との通信を開始します。 このメソッドは、スケジューラの IScheduler
インターフェイスを ISchedulerProxy
インターフェイスに関連付け、それをユーザーに返します。 返されたインターフェイスを使用して、スケジューラで使用する実行リソースを要求したり、Resource Manager でスレッドをサブスクライブしたりできます。 Resource Manager は、IScheduler::GetPolicy メソッドから返されるスケジューラ ポリシーのポリシー要素を使用して、スケジューラが処理を実行するために必要なスレッドの種類を決定します。 SchedulerKind
ポリシー キーの値が UmsThreadDefault
であり、この値が値 UmsThreadDefault
としてポリシーから読み取られる場合、メソッドに渡される IScheduler
インターフェイスは IUMSScheduler
インターフェイスである必要があります。
pScheduler
パラメーターの値が NULL
の場合、または version
パラメーターが通信インターフェイスの有効なバージョンではない場合、このメソッドは invalid_argument
例外をスローします。
IResourceManager::Release メソッド
Resource Manager インスタンスの参照カウントをデクリメントします。 Resource Manager は、参照カウントが 0
になると破棄されます。
virtual unsigned int Release() = 0;
戻り値
結果として得られる参照カウント。