Condividi tramite


Metodo IThreadProxy::SwitchTo

Consente di eseguire un cambio di contesto cooperativo passando dal contesto attualmente in esecuzione a uno diverso.

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

Parametri

  • pContext
    Contesto di esecuzione a cui passa in modo cooperativo.

  • switchState
    Indica lo stato del proxy del thread che sta eseguendo l'opzione.Il parametro è di tipo SwitchingProxyState.

Note

Utilizzare il metodo per passare da un contesto di esecuzione a un altro, dal metodo IExecutionContext::Dispatch del primo contesto di esecuzione.Il metodo associa il contesto di esecuzione pContext a un proxy del thread nel caso non sia già associato a uno.La proprietà del proxy del thread corrente è determinata dal valore specificato per l'argomento switchState.

Utilizzare il valore Idle quando si desidera restituire il proxy del thread attualmente in esecuzione a Gestione risorse.La chiamata SwitchTo con il parametro switchState impostato su Idle farà in modo che il contesto di esecuzione pContext inizi l'esecuzione sulla risorsa di esecuzione sottostante.La proprietà di questo proxy del thread viene trasferita al gestore risorse ed è prevista la restituzione dal metodo Dispatch del contesto di esecuzione subito dopo la restituzione di SwitchTo per completare il trasferimento.Il contesto di esecuzione, che il proxy del thread stava inviando, viene dissociato dal proxy del thread e l'utilità di pianificazione è libera di riutilizzarlo o eliminarlo come ritiene opportuno.

Utilizzare il valore Blocking quando si desidera passare questo proxy del thread a uno stato bloccato.La chiamata SwitchTo con il parametro switchState impostato su Blocking farà in modo che il contesto di esecuzione pContext cominci l'esecuzione e bloccherà il proxy del thread corrente fino a quando non viene ripreso.L'utilità di pianificazione mantiene la proprietà del proxy del thread quando quest'ultimo si trova nello stato Blocking.È possibile ripristinare il proxy del thread di blocco chiamando la funzione SwitchTo per passare al contesto di esecuzione di questo proxy del thread.È possibile ripristinare anche il proxy del thread, tramite il relativo contesto associato per attivare una radice del processore virtuale.Per ulteriori informazioni su come effettuare questa operazione, vedere IVirtualProcessorRoot::Activate.

Utilizzare il valore Nesting quando si desidera disconnettere temporaneamente il proxy del thread dalla radice del processore virtuale sui cui è in esecuzione e l'utilità di pianificazione per cui sta inviando un lavoro.La chiamata SwitchTo con il parametro switchState impostato su Nesting farà in modo che il contesto di esecuzione pContext inizi l'esecuzione e il proxy del thread corrente continuerà l'esecuzione senza la necessità di una radice di processore virtuale.Il proxy del thread non deve essere considerato finché l'utilità di pianificazione non chiama il metodo IThreadProxy::SwitchOut in un secondo momento.Il metodo IThreadProxy::SwitchOut potrebbe bloccare il proxy del thread finché non sarà disponibile una radice del processore virtuale per la sua ripianificazione.

È necessario chiamare SwitchTo sull'interfaccia IThreadProxy che rappresenta il thread attualmente in esecuzione altrimenti i risultati non saranno definiti.La funzione genera invalid_argument se il parametro pContext è impostato su NULL.

Requisiti

Header: concrtrm.h

Concorrenza diSpazio dei nomi:

Vedere anche

Riferimenti

Struttura IThreadProxy

Enumerazione SwitchingProxyState