Estrutura IResourceManager

Uma interface para o Resource Manager do Runtime de Simultaneidade. Essa é a interface pela qual os agendadores se comunicam com o Resource Manager.

Sintaxe

struct IResourceManager;

Membros

Enumerações públicas

Nome Descrição
IResourceManager::OSVersion Um tipo enumerado que representa a versão do sistema operacional.

Métodos públicos

Nome Descrição
IResourceManager::CreateNodeTopology Presente somente em builds de depuração do runtime, esse método é um gancho de teste projetado para facilitar a testagem do Resource Manager em topologias de hardware variadas, sem exigir que o hardware real corresponda à configuração. Com builds de varejo do runtime, esse método retornará sem executar nenhuma ação.
IResourceManager::GetAvailableNodeCount Retorna o número de nós disponíveis para o Resource Manager.
IResourceManager::GetFirstNode Retorna o primeiro nó na ordem de enumeração conforme definido pelo Resource Manager.
IResourceManager::Reference Incrementa a contagem de referência na instância do Resource Manager.
IResourceManager::RegisterScheduler Registra um agendador com o Resource Manager. Depois que o agendador for registrado, ele deverá se comunicar com o Resource Manager usando a interface ISchedulerProxy retornada.
IResourceManager::Release Diminui a contagem de referência na instância do Resource Manager. O Resource Manager é destruído quando sua contagem de referência vai para 0.

Comentários

Use a função CreateResourceManager para obter uma interface para a instância de Resource Manager singleton. O método incrementa uma contagem de referência no Resource Manager, e você deve invocar o método IResourceManager::Release para liberar a referência quando terminar de usar o Resource Manager. Normalmente, cada agendador criado invocará esse método durante a criação e liberará a referência ao Resource Manager depois que ele for desligado.

Hierarquia de herança

IResourceManager

Requisitos

Cabeçalho: concrtrm.h

Namespace: concurrency

Método IResourceManager::CreateNodeTopology

Presente somente em builds de depuração do runtime, esse método é um gancho de teste projetado para facilitar a testagem do Resource Manager em topologias de hardware variadas, sem exigir que o hardware real corresponda à configuração. Com builds de varejo do runtime, esse método retornará sem executar nenhuma ação.

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;

Parâmetros

nodeCount
O número de nós de processador que estão sendo simulados.

pCoreCount
Uma matriz que especifica o número de núcleos em cada nó.

pNodeDistance
Uma matriz que especifica a distância do nó entre dois nós. O parâmetro pode ter o valor NULL.

pProcessorGroups
Uma matriz que especifica o grupo de processadores ao qual cada nó pertence.

Comentários

invalid_argument é gerada se o parâmetro nodeCount tiver o valor 0 passado ou se o parâmetro pCoreCount tiver o valor NULL.

invalid_operation será gerada se esse método for chamado enquanto outros agendadores existirem no processo.

Método IResourceManager::GetAvailableNodeCount

Retorna o número de nós disponíveis para o Resource Manager.

virtual unsigned int GetAvailableNodeCount() const = 0;

Valor de Devolução

O número de nós disponíveis para o Resource Manager.

Método IResourceManager::GetFirstNode

Retorna o primeiro nó na ordem de enumeração conforme definido pelo Resource Manager.

virtual ITopologyNode* GetFirstNode() const = 0;

Valor de Devolução

O primeiro nó na ordem de enumeração conforme definido pelo Resource Manager.

Enumeração IResourceManager::OSVersion

Um tipo enumerado que representa a versão do sistema operacional.

enum OSVersion;

Método IResourceManager::Reference

Incrementa a contagem de referência na instância do Resource Manager.

virtual unsigned int Reference() = 0;

Valor de Devolução

A contagem de referência resultante.

Método IResourceManager::RegisterScheduler

Registra um agendador com o Resource Manager. Depois que o agendador for registrado, ele deverá se comunicar com o Resource Manager usando a interface ISchedulerProxy retornada.

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

Parâmetros

pScheduler
Uma interface IScheduler para o agendador a ser registrado.

version
A versão da interface de comunicação que o agendador está usando para se comunicar com o Resource Manager. O uso de uma versão permite que o Resource Manager evolua a interface de comunicação, permitindo que os agendadores obtenham acesso a recursos mais antigos. Os agendadores que desejam usar recursos do Resource Manager presentes no Visual Studio 2010 devem usar a versão CONCRT_RM_VERSION_1.

Valor de Devolução

A interface ISchedulerProxy que o Resource Manager associou ao seu agendador. Seu agendador deve usar essa interface para se comunicar com o Resource Manager a partir deste ponto.

Comentários

Use esse método para iniciar a comunicação com o Resource Manager. O método associa a interface IScheduler do agendador a uma interface ISchedulerProxy e a devolve para você. Você pode usar a interface retornada para solicitar recursos de execução para uso pelo agendador ou para assinar threads com o Resource Manager. O Resource Manager usará elementos de política da política do agendador retornada pelo método IScheduler::GetPolicy para determinar de que tipo de threads o agendador precisará para executar o trabalho. Se sua chave de política SchedulerKind tiver o valor UmsThreadDefault e o valor for lido de volta da política como o valor UmsThreadDefault, a interface IScheduler passada para o método deverá ser uma interface IUMSScheduler.

O método gera uma exceção invalid_argument se o parâmetro pScheduler tiver o valor NULL ou se o parâmetro version não for uma versão válida para a interface de comunicação.

Método IResourceManager::Release

Diminui a contagem de referência na instância do Resource Manager. O Resource Manager é destruído quando sua contagem de referência vai para 0.

virtual unsigned int Release() = 0;

Valor de Devolução

A contagem de referência resultante.

Confira também

Namespace de simultaneidade
Estrutura ISchedulerProxy
Estrutura IScheduler