Método de IVirtualProcessorRoot::Deactivate
Faz com que o proxy thread atualmente em execução na raiz deste processador virtual parar despachar o contexto de execução.O proxy thread continuará em execução em uma chamada para o Activate método.
virtual bool Deactivate(
_Inout_ IExecutionContext * pContext
) =0;
Parâmetros
- pContext
O contexto que está atualmente 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 no Gerenciador de recursos.No Agendador de thread (UMS) modo de usuário agendáveis, isso indica que itens apareceu na lista de conclusão do Agendador e o Agendador é necessária para lidar com eles.
Comentários
Use esse método para interromper temporariamente a execução uma raiz virtual do processador quando não é possível localizar qualquer trabalho no seu Agendador.Uma chamada para o Deactivate deve originar-se de dentro do método de Dispatch método de contexto de execução a raiz virtual processador última ativação com.Em outras palavras, o proxy thread chamando o Deactivate método deve ser aquele que está sendo executado na raiz do processador virtual.Chamar o método em uma raiz de processador virtual que não está executando pode resultar em comportamento indefinido.
Uma raiz de processador virtual desativada pode ser despertada com uma chamada para o Activate método com o mesmo argumento 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 não são necessários para ser recebido em uma ordem específica.O Gerenciador de recursos pode manipular receber uma chamada para o Activate método antes que ele recebe uma chamada para o Deactivate método foi criado.
Se desperta uma raiz virtual do processador e o valor de retorno de Deactivate método é o valor false, o Agendador deverá consultar a lista de conclusão UMS via o IUMSCompletionList::GetUnblockNotifications método, atuar sobre essas informações e chamar subseqüentemente o Deactivate método novamente.Isso deve ser repetido até o momento como o Deactivate método retorna o valor true.
invalid_argumenté lançada se o argumento pContext tem o valor NULL.
invalid_operationé lançada se a raiz virtual do processador nunca foi ativada, ou o argumento pContext não representa o contexto de execução que recentemente foi despachado pela raiz processador virtual.
O ato de desativação de uma raiz virtual processador diminui o nível de assinatura do thread de hardware subjacente por um.Para obter mais informações sobre níveis de assinatura, consulte IExecutionResource::CurrentSubscriptionLevel.
Requisitos
Cabeçalho: concrtrm.h
Namespace: concorrência
Consulte também
Referência
Estrutura de IVirtualProcessorRoot
Método de IVirtualProcessorRoot::Activate