IResourceManager 结构
并发运行时的资源管理器的接口。 这是计划程序与资源管理器进行通信的接口。
语法
struct IResourceManager;
成员
公共枚举
名称 | 描述 |
---|---|
IResourceManager::OSVersion | 表示操作系统版本的枚举类型。 |
公共方法
名称 | 描述 |
---|---|
IResourceManager::CreateNodeTopology | 此方法仅存在于运行时的调试版本中,是一种测试挂钩,旨在促进在不同硬件拓扑上测试资源管理器,而不需要与配置匹配的实际硬件。 对于运行时的零售版本,此方法将在不执行任何操作的情况下返回。 |
IResourceManager::GetAvailableNodeCount | 返回可供资源管理器使用的节点数。 |
IResourceManager::GetFirstNode | 按照资源管理器的定义,返回枚举顺序中的第一个节点。 |
IResourceManager::Reference | 递增资源管理器实例上的引用计数。 |
IResourceManager::RegisterScheduler | 向资源管理器注册计划程序。 注册计划程序后,它应使用返回的 ISchedulerProxy 接口与资源管理器通信。 |
IResourceManager::Release | 递减资源管理器实例上的引用计数。 当资源管理器的引用计数达到 0 时,将销毁该资源管理器。 |
备注
使用 CreateResourceManager 函数获取单一实例资源管理器实例的接口。 该方法递增资源管理器上的引用计数,你应在使用完资源管理器时调用 IResourceManager::Release 方法来释放引用。 通常,创建的每个计划程序在创建过程中都会调用此方法,并在关闭后释放对资源管理器的引用。
继承层次结构
IResourceManager
要求
标头:concrtrm.h
命名空间: 并发
IResourceManager::CreateNodeTopology 方法
此方法仅存在于运行时的调试版本中,是一种测试挂钩,旨在促进在不同硬件拓扑上测试资源管理器,而不需要与配置匹配的实际硬件。 对于运行时的零售版本,此方法将在不执行任何操作的情况下返回。
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;
返回值
可供资源管理器使用的节点数。
IResourceManager::GetFirstNode 方法
按照资源管理器的定义,返回枚举顺序中的第一个节点。
virtual ITopologyNode* GetFirstNode() const = 0;
返回值
按照资源管理器定义的枚举顺序中的第一个节点。
IResourceManager::OSVersion 枚举
表示操作系统版本的枚举类型。
enum OSVersion;
IResourceManager::Reference 方法
递增资源管理器实例上的引用计数。
virtual unsigned int Reference() = 0;
返回值
生成的引用计数。
IResourceManager::RegisterScheduler 方法
向资源管理器注册计划程序。 注册计划程序后,它应使用返回的 ISchedulerProxy
接口与资源管理器通信。
virtual ISchedulerProxy *RegisterScheduler(
_Inout_ IScheduler* pScheduler,
unsigned int version) = 0;
参数
pScheduler
要注册的计划程序的 IScheduler
接口。
version
计划程序用来与资源管理器通信的通信接口版本。 使用版本允许资源管理器改进通信接口,同时允许计划程序获取对旧功能的访问权限。 希望使用 Visual Studio 2010 中存在的资源管理器功能的计划程序应使用版本 CONCRT_RM_VERSION_1
。
返回值
资源管理器与计划程序关联的 ISchedulerProxy
接口。 计划程序应使用此接口从此点起与资源管理器通信。
备注
使用此方法启动与资源管理器的通信。 该方法将计划程序的 IScheduler
接口与 ISchedulerProxy
接口相关联并将其交还给你。 可以使用返回的接口请求计划程序使用的执行资源,或使用资源管理器订阅线程。 资源管理器将使用 IScheduler::GetPolicy 方法返回的计划程序策略中的策略元素来确定计划程序执行工作所需的线程类型。 如果 SchedulerKind
策略键具有值 UmsThreadDefault
,并且该值作为值 UmsThreadDefault
从策略中读回,则传递给方法的 IScheduler
接口必须是 IUMSScheduler
接口。
如果参数 pScheduler
的值为 NULL
或参数 version
不是通信接口的有效版本,该方法将引发 invalid_argument
异常。
IResourceManager::Release 方法
递减资源管理器实例上的引用计数。 当资源管理器的引用计数达到 0
时,将销毁该资源管理器。
virtual unsigned int Release() = 0;
返回值
生成的引用计数。