Compartir a través de


IThreadProxy::SwitchTo (Método)

Realiza un cambio de contexto cooperativo del contexto actualmente en ejecución a uno diferente.

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

Parámetros

  • pContext
    El contexto de ejecución para cambiar a forma cooperativa.

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

Comentarios

Use este método para intercambiar de un contexto de ejecución a otro, desde el método IExecutionContext::Dispatch del primer contexto de ejecución. El método asocia la ejecución del contexto pContext a un proxy del subproceso si aún no está asociado a uno. El valor determina la propiedad del proxy del subproceso actual que especifica para el argumento switchState.

Use el valor Idle cuando desee devolver el proxy del subproceso actualmente en ejecución al administrador de recursos. Si se llama a SwitchTo con el parámetro switchState establecido en Idle hará que el contexto de ejecución pContext se empiece a ejecutar en el recurso de ejecución subyacente. La propiedad de este proxy del subproceso se transfiere al administrador de recursos y se espera que vuelva del método Dispatch del contexto de ejecución poco después de que vuelva SwitchTo, para completar la transferencia. El contexto de ejecución que el proxy del subproceso estaba enviando se desasocia del proxy del subproceso y el programador es libre de reutilizarlo o destruirlo como considere apropiado.

Use el valor Blocking cuando desee que este proxy del subproceso entre en un estado bloqueado. Si se llama a SwitchTo con el parámetro switchState establecido en Blocking hará que el contexto de ejecución pContext se empiece a ejecutar y se bloquee el proxy del subproceso actual hasta que se reanude. El programador retiene la propiedad del proxy del subproceso cuando el proxy del subproceso se encuentra en el estado Blocking. 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.

Use el valor Nesting cuando desee desasociar temporalmente este proxy del subproceso de la raíz del procesador virtual en donde se está ejecutando, y para donde el programador está distribuyendo trabajo. Si se llama a SwitchTo con el parámetro switchState establecido en Nesting hará que el contexto de ejecución pContext se empiece a ejecutar y el proxy del subproceso actual también sigue ejecutándose sin necesitar una raíz de procesador virtual. Se considera que el proxy del subproceso ha dejado el programador hasta que llama al método IThreadProxy::SwitchOut posteriormente. El método IThreadProxy::SwitchOut podría bloquear el proxy del subproceso hasta que una raíz del procesador virtual esté disponible para reprogramarlo.

Se debe llamar a SwitchTo en la interfaz IThreadProxy que representa el subproceso actualmente en ejecución o los resultados no se definen. La función produce invalid_argument si el parámetro pContext se establece en NULL.

Requisitos

Encabezado: concrtrm.h

Espacio de nombres: simultaneidad

Vea también

Referencia

IThreadProxy (Estructura)

SwitchingProxyState (Enumeración)