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;

返回值

生成的引用计数。

另请参阅

并发命名空间
ISchedulerProxy 结构
IScheduler 结构