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