Método de IVirtualProcessorRoot::Deactivate
Faz com que o proxy de thread em execução no momento nesta raiz virtual do processador interromper a despachar o contexto de execução. O proxy de thread continuará em execução em uma chamada para o Activate método.
virtual bool Deactivate(
IExecutionContext * pContext
) =0;
Parâmetros
- pContext
O contexto que atualmente está sendo despachado por esta raiz.
Valor de retorno
Um valor booleano. Um valor de true indica que o proxy de thread retornado do Deactivate método em resposta a uma chamada para o Activate método. Um valor de false indica que o proxy de thread retornado do método em resposta a um evento de notificação do Gerenciador de recursos. No Agendador de threads (UMS) modo de usuário agendáveis, isso indica que os itens apareceu na lista de conclusão do Agendador, e o Agendador é necessária para lidar com eles.
Comentários
Use este método para interromper temporariamente a execução de uma raiz virtual do processador quando você não pode localizar qualquer trabalho no seu Agendador. Uma chamada para o Deactivate método deverão ser originados dentro do Dispatch método usado para o contexto de execução que a raiz do processador virtual última ativação com. Em outras palavras, o proxy de thread chamando o Deactivate o método deve ser aquele que está sendo executado no processador virtual root. Chamando o método em uma raiz virtual do processador que não está executando no poderia resultar em um comportamento indefinido.
Uma raiz desativado processador virtual pode ser despertada com uma chamada para o Activate método, com o mesmo argumento que foi passado para o Deactivate método. O Agendador é responsável por garantir que chama o Activate e Deactivate métodos estão emparelhados, mas eles são necessários não sejam recebidas em uma ordem específica. O Gerenciador de recursos pode manipular o recebimento de uma chamada para o Activate método antes de receber uma chamada para o Deactivate método foi significava loop for
Se desperta de uma raiz virtual do processador e o valor de retorno a Deactivate método é o valor false, o Agendador deve consultar a lista de conclusão UMS via o IUMSCompletionList::GetUnblockNotifications método, agir de acordo com as informações e chamar subseqüentemente a Deactivate método novamente. Isso deve ser repetido até o momento em que o Deactivate método retorna o valor true.
invalid_argumenté lançada se o argumento pContext possui o valor NULL.
invalid_operationé lançada se a raiz virtual do processador nunca tiver sido ativada, ou o argumento pContext não representa o contexto de execução que recentemente foi despachado por esta raiz do processador virtual.
O ato de desativação de uma raiz virtual do processador diminui o nível de assinatura do segmento de hardware subjacente por um. Para obter mais informações sobre níveis de assinatura, consulte IExecutionResource::CurrentSubscriptionLevel.
Requisitos
Cabeçalho: concrtrm.h
Namespace: Simultaneidade
Consulte também
Referência
Estrutura de IVirtualProcessorRoot
Método de IVirtualProcessorRoot::Activate
Método de IUMSCompletionList::GetUnblockNotifications