Compartilhar via


Método IThreadProxy::SwitchTo

Executa uma opção cooperativo do contexto atualmente em execução a um diferente.

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

Parâmetros

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

  • switchState
    Indica o estado do proxy de segmento que está executando a opção. O parâmetro é do tipo SwitchingProxyState.

Comentários

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

Use o valor Idle quando você quiser retornar o proxy atualmente em execução do thread no Gerenciador de Recursos. A chamada SwitchTo com o parâmetro switchState definido como Idle fará o contexto pContext de execução no início que executa no recurso subjacente de execução. A propriedade desse proxy de thread é transferida para o Gerenciador de Recursos, e você deve retornar logo do método de Dispatch do contexto de execução depois que SwitchTo retorna, para concluir a transferência. O contexto de execução que o proxy do thread despachava está dissociado de proxy de thread, e do agendador está livre reutilizá-la ou destrui-lo como considera o ajuste.

Use o valor Blocking quando você deseja que esse proxy de thread para entrar em um estado bloqueado. A chamada SwitchTo com o parâmetro switchState definido como Blocking fará o contexto pContext de execução no início que executa, e bloqueia o proxy do thread atual até que seja retomada. O agendador o reterá a propriedade de thread quando proxy do proxy do thread está em estado de Blocking . O proxy do thread de bloqueio pode ser retomado chamando a função SwitchTo para alternar para o contexto de execução desse proxy de thread. Você também pode retomar 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ê quer desanexar temporariamente esse proxy de threads da raiz virtual que o processador está em execução, e o agendador está despachando o trabalho para. A chamada SwitchTo com o parâmetro switchState definido como Nesting fará o contexto de execução para o pContext inicie a execução e o proxy do thread atual também retoma a execução de sem a necessidade de uma raiz virtual do processador. O proxy de thread é considerada como esquerda do agendador até que chama o método de IThreadProxy::SwitchOut em um momento determinado. O método de IThreadProxy::SwitchOut pode bloquear o proxy de threads até que uma raiz virtual do processador está disponível para o reagendamento.

SwitchTo deve ser chamado na interface IThreadProxy que representa o thread em execução no momento ou os resultados serão indefinidos. A função gerará invalid_argument se o parâmetro pContext é definido como NULL.

Requisitos

Cabeçalho: concrtrm.h

Namespace: simultaneidade

Consulte também

Referência

Estrutura IThreadProxy

Enumeração SwitchingProxyState