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

傳回值

ISchedulerProxyResource Manager 與您的排程器相關聯的介面。 排程器應該使用此介面,從這個點開始與 Resource Manager 通訊。

備註

使用此方法起始與 Resource Manager 的通訊。 方法會將 IScheduler 排程器的介面與 ISchedulerProxy 介面產生關聯,並將它交回給您。 您可以使用傳回的介面來要求執行資源以供排程器使用,或使用 Resource Manager 訂閱執行緒。 Resource Manager 會使用 IScheduler::GetPolicy 方法所 傳回排程器原則的原則元素,來判斷排程器執行工作所需的執行緒類型。 SchedulerKind如果您的原則索引鍵具有 值 UmsThreadDefault ,且值會從原則傳回做為值 UmsThreadDefaultIScheduler 則傳遞至 方法的介面必須是 IUMSScheduler 介面。

如果參數 pScheduler 具有 值 NULL ,或參數 version 不是通訊介面的有效版本,方法會擲回 invalid_argument 例外狀況。

IResourceManager::Release 方法

遞減 Resource Manager 實例上的參考計數。 當 Resource Manager 的參考計數移至 0 時會終結。

virtual unsigned int Release() = 0;

傳回值

產生的參考計數。

另請參閱

concurrency 命名空間
ISchedulerProxy 結構
IScheduler 結構