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 retorno
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 retorno
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 retorno
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 retorno
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 retorno
A contagem de referência resultante.
Confira também
Namespace de simultaneidade
Estrutura ISchedulerProxy
Estrutura IScheduler