Condividi tramite


Metodo IVirtualProcessorRoot::Deactivate

Provoca il proxy del thread attualmente in esecuzione sulla radice del processore virtuale per interrompere la distribuzione del contesto di esecuzione.Il proxy del thread riprenderà l'esecuzione su una chiamata al metodo Activate.

virtual bool Deactivate(
   _Inout_ IExecutionContext * pContext
) =0;

Parametri

  • pContext
    Contesto inviato attualmente da tale radice.

Valore restituito

Valore booleano.Un valore di true indica che il proxy del thread restituito dal metodo Deactivate in risposta a una chiamata al metodo Activate.Un valore di false indica che il proxy del thread restituito dal metodo in risposta a un evento di notifica in Gestione risorse.In un'utilità di pianificazione di thread di schedulable di modalità utente (UMS), questo indica che gli elementi sono stati visualizzati dall'elenco di completamento dell'utilità di pianificazione e l'utilità di pianificazione è necessaria per gestirli.

Note

Utilizzare il metodo per interrompere temporaneamente l'esecuzione di una radice del processore virtuale quando non è possibile trovare alcun lavoro nell'utilità di pianificazione.Una chiamata al metodo Deactivate deve provenire dall'interno del metodo Dispatch del contesto di esecuzione con il quale è stata attivata la radice del processore virtuale l'ultima volta.In altre parole, il proxy del thread che richiama il metodo Deactivate deve essere quello attualmente in esecuzione sulla radice del processore virtuale.La chiamata del metodo su una radice di processore virtuale su cui non è in corso di esecuzione potrebbe comportare un comportamento non definito.

È possibile che una radice del processore virtuale disattivata possa essere riattivata con una chiamata al metodo Activate, con lo stesso argomento passato in al metodo Deactivate.L'utilità di pianificazione ha la responsabilità di garantire che le chiamate ai metodi Activate e Deactivate siano accoppiate, ma non è necessario riceverle in un ordine specifico.Gestione risorse può gestire la ricezione di una chiamata al metodo Activate prima di ricevere una chiamata al metodo Deactivate a cui era destinato.

Se una radice del processore virtuale si attiva e il valore restituito dal metodo Deactivate è il valore false, l'utilità di pianificazione deve eseguire una query dall'elenco di completamento UMS tramite il metodo IUMSCompletionList::GetUnblockNotifications, agire su quelle informazioni e successivamente chiamare nuovamente il metodo Deactivate.Deve essere ripetuto finché il metodo Deactivate non restituisce il valore true.

invalid_argument è generata se l'argomento pContext ha il valore NULL.

invalid_operation viene generato se la radice del processore virtuale non è mai stata attivata oppure l'argomento pContext non rappresenta il contesto di esecuzione inviato più recentemente da questa radice del processore virtuale.

L'atto di disattivare la radice di un processore virtuale riduce di uno il livello di sottoscrizione del thread di hardware sottostante.Per ulteriori informazioni sui livelli della sottoscrizione, vedere IExecutionResource::CurrentSubscriptionLevel.

Requisiti

Header: concrtrm.h

Concorrenza diSpazio dei nomi:

Vedere anche

Riferimenti

Struttura IVirtualProcessorRoot

Metodo IVirtualProcessorRoot::Activate

Metodo IExecutionResource::CurrentSubscriptionLevel

Metodo IUMSCompletionList::GetUnblockNotifications