Структура 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