Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Интерфейс для диспетчера ресурсов среды параллельных вычислений. Это интерфейс, по которому планировщики взаимодействуют с диспетчером ресурсов.
Синтаксис
struct IResourceManager;
Участники
Публичные перечисления
| Имя | Описание |
|---|---|
| IResourceManager::OSVersion | Перечислимый тип, представляющий версию операционной системы. |
Открытые методы
| Имя | Описание |
|---|---|
| IResourceManager::CreateNodeTopology | Присутствует только в отладочных сборках среды выполнения, этот метод является тест-хуком, предназначенным для упрощения тестирования диспетчера ресурсов на различных аппаратных топологиях, без необходимости иметь соответствующее оборудование в конфигурации. При использовании розничных сборок среды выполнения этот метод возвращается без выполнения каких-либо действий. |
| IResourceManager::GetAvailableNodeCount | Возвращает количество узлов, доступных диспетчеру ресурсов. |
| IResourceManager::GetFirstNode | Возвращает первый узел в порядке перечисления, определенном диспетчером ресурсов. |
| IResourceManager::Reference | Увеличивает количество ссылок в экземпляре Resource Manager. |
| IResourceManager::RegisterScheduler | Регистрирует планировщик в Диспетчере ресурсов. После регистрации планировщика он должен взаимодействовать с Resource Manager с помощью возвращаемого ISchedulerProxy интерфейса. |
| IResourceManager::Release | Уменьшает количество ссылок в экземпляре Resource Manager. Диспетчер ресурсов уничтожается, когда количество его ссылок становится равным 0. |
Замечания
Используйте функцию CreateResourceManager для получения интерфейса к экземпляру Singleton Resource Manager. Метод увеличивает количество ссылок в Resource Manager и вызывает метод IResourceManager::Release , чтобы освободить ссылку при завершении работы с Resource Manager. Как правило, каждый планировщик, который вы создаете, вызывает этот метод во время создания и освобождает ссылку на Resource Manager после завершения работы.
Иерархия наследования
IResourceManager
Требования
Заголовок: concrtrm.h
Пространство имен: конкурентность
Метод 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».
Перечисление OSVersion IResourceManager
Перечислимый тип, представляющий версию операционной системы.
enum OSVersion;
Метод IResourceManager::Reference
Увеличивает количество ссылок в экземпляре Resource Manager.
virtual unsigned int Reference() = 0;
Возвращаемое значение
Результирующий счетчик ссылок.
Метод IResourceManager::RegisterScheduler
Регистрирует планировщик в Диспетчере ресурсов. После регистрации планировщика он должен взаимодействовать с Resource Manager с помощью возвращаемого ISchedulerProxy интерфейса.
virtual ISchedulerProxy *RegisterScheduler(
_Inout_ IScheduler* pScheduler,
unsigned int version) = 0;
Параметры
pScheduler
Интерфейс IScheduler для регистрации в планировщике.
версия
Версия интерфейса связи, которую планировщик использует для взаимодействия с Диспетчером ресурсов. Использование версии позволяет Resource Manager развивать интерфейс связи, позволяя планировщикам получать доступ к старым функциям. Планировщики, которые хотят использовать функции Resource Manager, присутствующих в Visual Studio 2010, должны использовать версию CONCRT_RM_VERSION_1.
Возвращаемое значение
Интерфейс ISchedulerProxy, который диспетчер ресурсов ассоциировал с вашим планировщиком. Ваш диспетчер должен использовать этот интерфейс для взаимодействия с Resource Manager отныне.
Замечания
Используйте этот метод для инициирования взаимодействия с Resource Manager. Метод связывает IScheduler интерфейс планировщика с интерфейсом ISchedulerProxy и передает его вам. Вы можете использовать возвращенный интерфейс для запроса ресурсов выполнения, чтобы планировщик мог их использовать, или для регистрации потоков в Диспетчере ресурсов. Менеджер ресурсов будет использовать элементы политики из политики планировщика, возвращаемой методом IScheduler::GetPolicy, чтобы определить, какие типы потоков потребуются планировщику для выполнения работы.
SchedulerKind Если этот ключ политики имеет значение UmsThreadDefault, а значение считывается обратно из политики как значение UmsThreadDefault, интерфейс, переданный методу IScheduler, должен быть интерфейсом IUMSScheduler.
Метод создает invalid_argument исключение, если параметр pScheduler имеет значение NULL или если параметр version не является допустимой версией для интерфейса связи.
Метод IResourceManager::Release
Уменьшает количество ссылок в экземпляре Resource Manager. Диспетчер ресурсов уничтожается, когда количество его ссылок становится равным 0.
virtual unsigned int Release() = 0;
Возвращаемое значение
Итоговый счетчик ссылок.
См. также
Пространство имен параллелизм
Структура ISchedulerProxy
Структура IScheduler