Поделиться через


Структура IResourceManager

Интерфейс для диспетчера ресурсов среды выполнения с параллелизмом. Это интерфейс, по которому планировщики взаимодействуют с диспетчером ресурсов.

Синтаксис

struct IResourceManager;

Участники

Открытые перечисления

Имя Описание
IResourceManager::OSVersion Перечислимый тип, представляющий версию операционной системы.

Открытые методы

Имя Описание
IResourceManager::CreateNodeTopology Существует только в отладочных сборках среды выполнения, этот метод является тест-перехватчиком, предназначенным для упрощения тестирования Resource Manager на различных аппаратных топологиях, не требуя фактического аппаратного сопоставления конфигурации. При использовании розничных сборок среды выполнения этот метод возвращается без выполнения каких-либо действий.
IResourceManager::GetAvailableNodeCount Возвращает количество узлов, доступных диспетчеру ресурсов.
IResourceManager::GetFirstNode Возвращает первый узел в порядке перечисления, определенном диспетчером ресурсов.
IResourceManager::Reference Увеличивает количество ссылок в экземпляре Resource Manager.
IResourceManager::RegisterScheduler Регистрирует планировщик в Resource Manager. После регистрации планировщика он должен взаимодействовать с Resource Manager с помощью возвращаемого ISchedulerProxy интерфейса.
IResourceManager::Release Уменьшает количество ссылок в экземпляре Resource Manager. Диспетчер ресурсов уничтожается при переходе к его количеству 0ссылок.

Замечания

Используйте функцию CreateResourceManager для получения интерфейса к экземпляру Singleton 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
Массив, указывающий группу процессоров, к которой принадлежит каждый узел.

Замечания

invalid_argument возникает, если параметр nodeCount имеет значение0, переданное или если параметр pCoreCount имеет значениеNULL.

invalid_operation возникает, если этот метод вызывается, а другие планировщики существуют в процессе.

Метод IResourceManager::GetAvailableNodeCount

Возвращает количество узлов, доступных диспетчеру ресурсов.

virtual unsigned int GetAvailableNodeCount() const = 0;

Возвращаемое значение

Количество узлов, доступных диспетчеру ресурсов.

Метод 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. После регистрации планировщика он должен взаимодействовать с Resource Manager с помощью возвращаемого ISchedulerProxy интерфейса.

virtual ISchedulerProxy *RegisterScheduler(
    _Inout_ IScheduler* pScheduler,
    unsigned int version) = 0;

Параметры

pScheduler
Интерфейс IScheduler для регистрации планировщика.

version
Версия интерфейса связи планировщик используется для взаимодействия с Resource Manager. Использование версии позволяет Resource Manager развивать интерфейс связи, позволяя планировщикам получать доступ к старым функциям. Планировщики, которые хотят использовать функции Resource Manager, присутствующих в Visual Studio 2010, должны использовать версию CONCRT_RM_VERSION_1.

Возвращаемое значение

Интерфейс ISchedulerProxy , связанный с планировщиком, связан с resource Manager. Планировщик должен использовать этот интерфейс для взаимодействия с Resource Manager с этой точки.

Замечания

Используйте этот метод для инициирования взаимодействия с Resource Manager. Метод связывает IScheduler интерфейс планировщика с интерфейсом ISchedulerProxy и передает его вам. Вы можете использовать возвращенный интерфейс для запроса ресурсов выполнения для использования планировщиком или подписки потоков с помощью Resource Manager. Resource Manager будет использовать элементы политики из политики планировщика, возвращаемой методом IScheduler::GetPolicy , чтобы определить, какой тип потоков планировщику потребуется выполнить работу. SchedulerKind Если ключ политики имеет значениеUmsThreadDefault, а значение считывается обратно из политики в качестве значенияUmsThreadDefault, интерфейс, переданный методу, IScheduler должен быть интерфейсомIUMSScheduler.

Метод создает invalid_argument исключение, если параметр pScheduler имеет значение NULL или если параметр version не является допустимой версией для интерфейса связи.

Метод IResourceManager::Release

Уменьшает количество ссылок в экземпляре Resource Manager. Диспетчер ресурсов уничтожается при переходе к его количеству 0ссылок.

virtual unsigned int Release() = 0;

Возвращаемое значение

Результирующий счетчик ссылок.

См. также

Пространство имен concurrency
Структура ISchedulerProxy
Структура IScheduler