IResourceManager 結構
並行執行階段資源管理員的介面。 這是排程器用來與資源管理員通訊的介面。
語法
struct IResourceManager;
成員
公用列舉類型
名稱 | 描述 |
---|---|
IResourceManager::OSVersion | 代表作業系統版本的列舉類型。 |
公用方法
名稱 | 描述 |
---|---|
IResourceManager::CreateNodeTopology | 只有在運行時間的偵錯組建中,這個方法是一種測試勾點,其設計目的是為了協助在各種硬體拓撲上測試 Resource Manager,而不需要實際的硬體比對組態。 使用運行時間的零售組建時,此方法會傳回而不執行任何動作。 |
IResourceManager::GetAvailableNodeCount | 傳回可供資源管理員使用的節點數目。 |
IResourceManager::GetFirstNode | 傳回資源管理員所定義之列舉順序中的第一個節點。 |
IResourceManager::Reference | 遞增 Resource Manager 實例上的參考計數。 |
IResourceManager::RegisterScheduler | 向 Resource Manager 註冊排程器。 註冊排程器之後,應該使用傳回的 ISchedulerProxy 介面與 Resource Manager 通訊。 |
IResourceManager::Release | 遞減 Resource Manager 實例上的參考計數。 當 Resource Manager 的參考計數移至 0 時會終結。 |
備註
使用 CreateResourceManager 函式來取得單一 Resource Manager 實例的介面。 方法會在 Resource Manager 上遞增參考計數,而且您應該 叫用 IResourceManager::Release 方法,以在完成 Resource Manager 時釋放參考。 一般而言,您建立的每個排程器都會在建立期間叫用此方法,並在其關閉之後釋放 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
矩陣,指定任兩個節點之間的節點距離。 這個參數可以有 值 NULL
。
pProcessorGroups
數位,指定每個節點所屬的處理器群組。
備註
如果參數nodeCount
已傳入值0
,或參數pCoreCount
具有 值 NULL
,則會擲回invalid_argument。
如果在進程中有其他排程器存在時呼叫此方法,則會擲回invalid_operation 。
IResourceManager::GetAvailableNodeCount 方法
傳回可供資源管理員使用的節點數目。
virtual unsigned int GetAvailableNodeCount() const = 0;
傳回值
Resource Manager 可用的節點數目。
IResourceManager::GetFirstNode 方法
傳回資源管理員所定義之列舉順序中的第一個節點。
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
。
傳回值
ISchedulerProxy
Resource Manager 與您的排程器相關聯的介面。 排程器應該使用此介面,從這個點開始與 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;
傳回值
產生的參考計數。