Compartir a través de


IThreadProxy::SwitchOut (Método)

Se disocia el contexto desde la raíz del procesador virtual subyacente.

virtual void SwitchOut(
   SwitchingProxyState switchState = Blocking
) =0;

Parámetros

  • switchState
    Indica el estado del proxy del subproceso que está ejecutando el modificador.El parámetro es de tipo SwitchingProxyState.

Comentarios

Uso SwitchOut si necesita anular la asociación a un contexto de la raíz de procesador virtual está ejecutando, por cualquier motivo.En función del valor se pasa en el parámetro switchState, y si o no se ejecuta en una raíz virtual de procesador, la llamada se devuelven inmediatamente o bloquear el proxy de subproceso asociado al contexto.Es un error llamar a SwitchOut con el parámetro establecido en Idle.Si lo hace, en un invalid_argument excepción.

SwitchOutes útil cuando desea reducir el número de raíces de procesador virtual que tiene su programador, porque el Administrador de recursos le haya pedido que lo haga o porque pidió una raíz de procesador virtual de sobreutilización temporal y se realizan con él.En este caso se debe invocar el método IVirtualProcessorRoot::Remove en la raíz virtual de procesador, antes de realizar una llamada a SwitchOut con el parámetro switchState establecida en Blocking.Esto bloqueará al proxy de subproceso y se reanudar la ejecución cuando una raíz de procesador virtual diferente en el programador está disponible para que lo ejecute.El proxy del subproceso de bloqueo se puede reanudar llamando a la función SwitchTo para cambiar al contexto de ejecución del proxy de este subproceso.También puede reanudar el proxy del subproceso, utilizando su contexto asociado para activar una raíz del procesador virtual.Para obtener más información sobre cómo hacer esto, vea IVirtualProcessorRoot::Activate.

SwitchOutTambién se puede utilizar cuando desea reinicializar el procesador virtual por lo que se puede activar en el futuro mientras ya sea el proxy de subproceso de bloqueo o temporalmente la desasociación de la raíz virtual de procesador se ejecuta en y el programador de que está ejecutando trabajos para.Uso SwitchOut con el parámetro switchState establecida en Blocking si desea bloquear el proxy de subproceso.Lo más tarde se puede reanudar mediante SwitchTo o IVirtualProcessorRoot::Activate como se indicó anteriormente.Uso SwitchOut con el parámetro establecido en Nesting cuando desee desasociar temporalmente esta proxy hilo desde la raíz del procesador virtual se está ejecutando en y el programador del procesador virtual está asociado con.Llamar a SwitchOut con el parámetro switchState establecida en Nesting mientras se está ejecutando en la raíz de una procesador virtual hará que la raíz reinicializar y el proxy de subproceso actual para continuar la ejecución sin necesidad de utilizar uno.El proxy hilo se considera que han abandonado el planificador hasta que llama a la IThreadProxy::SwitchOut método Blocking en un momento posterior.La segunda llamada a SwitchOut con el parámetro establecido en Blocking está pensado para devolver el contexto para un estado bloqueado de forma que puede reanudarse, ya sea por SwitchTo o IVirtualProcessorRoot::Activate en el programador separa.Debido a que no se estaba ejecutando en una raíz virtual de procesador, la reinicialización no tiene lugar.

Una raíz de procesador virtual reinicializado es no difiere de una nueva raíz de procesador virtual que su programador se ha concedido por el Administrador de recursos.Puede utilizar para la ejecución mediante la activación con un contexto de ejecución mediante IVirtualProcessorRoot::Activate.

Se debe llamar a SwitchOut en la interfaz IThreadProxy que representa el subproceso actualmente en ejecución o los resultados no se definen.

En las bibliotecas y encabezados que se incluye con Visual Studio 2010, este método no tuvo un parámetro y no reinicializar la raíz de procesador virtual.Para conservar el comportamiento anterior cuando se actualiza a Visual Studio 2012, el valor de parámetro predeterminado de Blocking se suministra.

Requisitos

Encabezado: concrtrm.h

Espacio de nombres: concurrencia

Vea también

Referencia

IThreadProxy (Estructura)