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;

戻り値

結果として得られる参照カウント。

関連項目

コンカレンシー名前空間
ISchedulerProxy 構造体
IScheduler 構造体