Método de IThreadProxy::SwitchTo
Realiza uma alternância de contexto cooperativo de contexto de execução no momento para um diferente.
virtual void SwitchTo(
_Inout_ IExecutionContext * pContext,
SwitchingProxyState switchState
) =0;
Parâmetros
pContext
O contexto de execução cooperativa alternar para.switchState
Indica o estado do proxy thread que está executando o switch.O parâmetro é do tipo SwitchingProxyState.
Comentários
Use este método para alternar do contexto de execução de um para outro, da IExecutionContext::Dispatch método do contexto de primeiro execução.O método associa o contexto de execução pContext com um proxy de thread se ele já não estiver associado a um.A propriedade de proxy atual do thread é determinada pelo valor que você especificar para o switchState argumento.
Use o valor Idle quando desejar retornar o proxy thread atualmente em execução para o Gerenciador de recursos.Chamando SwitchTo com o parâmetro switchState definido como Idle fará com que o contexto de execução pContext para iniciar a execução do recurso de execução subjacente.A propriedade de proxy neste segmento é transferida para o Gerenciador de recursos e espera retornar no contexto de execução Dispatch método logo após SwitchTo retorna para concluir a transferência.O contexto de execução foi despachar o proxy thread é disassociated do proxy de thread e o Agendador é livre para reutilizá-lo ou destruí-lo como vê adequado.
Use o valor Blocking quando você deseja que esse proxy thread para entrar em um estado bloqueado.Chamando SwitchTo com o parâmetro switchState definido como Blocking fará com que o contexto de execução pContext para iniciar a execução e bloquear o proxy thread atual até que ela é reiniciada.O Agendador retém propriedade do proxy thread quando o proxy thread está na Blocking estado.O proxy bloqueio de thread pode ser reiniciado chamando a função SwitchTo para alternar para o contexto de execução do proxy de thread.Você também pode reiniciar proxy thread, usando seu contexto associado para ativar uma raiz virtual do processador.Para obter mais informações sobre como fazer isso, consulte IVirtualProcessorRoot::Activate.
Use o valor Nesting quando você deseja desanexar temporariamente esse proxy thread da raiz processador virtual está sendo executado no e o Agendador está distribuindo trabalho para.Chamando SwitchTo com o parâmetro switchState definido como Nesting fará com que o contexto de execução pContext para iniciar a execução e o atual proxy thread também continuará executando sem a necessidade de uma raiz virtual do processador.O proxy thread é considerado para ter deixado o Agendador até que ele chama o IThreadProxy::SwitchOut método em um momento posterior.O IThreadProxy::SwitchOut método poderia bloquear o proxy thread até que uma raiz virtual do processador esteja disponível para reagendá-la.
SwitchTodeve ser chamado na IThreadProxy interface que representa o thread atualmente em execução ou os resultados são indefinidos.A função lança invalid_argument se o parâmetro pContext é definido como NULL.
Requisitos
Cabeçalho: concrtrm.h
Namespace: concorrência