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

Outros recursos

Método de IExecutionResource::CurrentSubscriptionLevel