Compartilhar via


Método de IThreadProxy::SwitchTo

Executa uma alternância de contexto cooperativo no contexto de execução no momento para um diferente.

virtual void SwitchTo(
   IExecutionContext * pContext,
   SwitchingProxyState switchState
) =0;

Parâmetros

  • pContext
    O contexto de execução para alternar de forma cooperativa para.

  • switchState
    Indica o estado do proxy de thread que está executando o switch. O parâmetro é do tipo SwitchingProxyState.

Comentários

Use esse método para alternar do contexto de execução de um para outro, a partir de IExecutionContext::Dispatch método do contexto de execução primeiro. O método associa o contexto de execução pContext com um proxy de thread, se ainda não estiver associada a um. A posse do proxy de thread atual é determinada pelo valor que você especificar para o switchState argumento.

Use o valor Idle Quando você deseja retornar o proxy de thread atualmente em execução no 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 do proxy thread é transferida para o Gerenciador de recursos e espera-se que você retornar a partir do contexto de execução Dispatch método logo após a SwitchTo retorna, a fim de concluir a transferência. O contexto de execução, o proxy de thread foi despachando seja desassociado do proxy de thread e, em seguida, o Agendador é livre para reutilizá-lo ou destruí-lo como ele vê adequado.

Use o valor Blocking quando desejar que esse proxy de thread para inserir 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 do thread atual até que ela é reiniciada. O Agendador retém a propriedade do proxy thread quando o proxy de thread está na Blocking estado. O proxy de segmento de bloqueio pode ser reiniciado chamando a função SwitchTo para alternar para o contexto de execução esse proxy de thread. Você também pode reiniciar o proxy de 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 de thread da raiz virtual do processador estiver em execução e o Agendador de despacho de loop for de trabalho 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 a atual proxy de thread também continua em execução sem a necessidade de uma raiz do processador virtual. O proxy de 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 de thread até que uma raiz do processador virtual está disponível para reagendar o proprietário.

SwitchTodeve ser chamado na IThreadProxy interface que representa o segmento de execução no momento ou os resultados são indefinidos. A função lança invalid_argument se o parâmetro pContext é definida como NULL.

Requisitos

Cabeçalho: concrtrm.h

Namespace: Simultaneidade

Consulte também

Referência

Estrutura de IThreadProxy

Enumeração de SwitchingProxyState