Compartilhar via


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

Método de IExecutionResource::CurrentSubscriptionLevel

Método IUMSCompletionList::GetUnblockNotifications