Struttura IExecutionContext
Un'interfaccia a un contesto di esecuzione che può essere in esecuzione su un processore virtuale specificato e il cui contesto può essere cambiato cooperativamente.
Sintassi
struct IExecutionContext;
Membri
Metodi pubblici
Nome | Descrizione |
---|---|
IExecutionContext::D ispatch | Metodo chiamato quando un proxy di thread inizia a eseguire un contesto di esecuzione specifico. Deve trattarsi della routine di lavoro principale per l'utilità di pianificazione. |
IExecutionContext::GetId | Restituisce un identificatore univoco per il contesto di esecuzione. |
IExecutionContext::GetProxy | Restituisce un'interfaccia al proxy di thread che esegue questo contesto. |
IExecutionContext::GetScheduler | Restituisce un'interfaccia all'utilità di pianificazione a cui appartiene questo contesto di esecuzione. |
IExecutionContext::SetProxy | Associa un proxy di thread a questo contesto di esecuzione. Il proxy del thread associato richiama questo metodo subito prima di iniziare l'esecuzione del metodo del Dispatch contesto. |
Osservazioni:
Se si implementa un'utilità di pianificazione personalizzata che si interfaccia con Resource Manager del runtime di concorrenza, sarà necessario implementare l'interfaccia IExecutionContext
. I thread creati da Resource Manager eseguono operazioni per conto dell'utilità di pianificazione eseguendo il IExecutionContext::Dispatch
metodo .
Gerarchia di ereditarietà
IExecutionContext
Requisiti
Intestazione: concrtrm.h
Spazio dei nomi: Concurrency
Metodo IExecutionContext::D ispatch
Metodo chiamato quando un proxy di thread inizia a eseguire un contesto di esecuzione specifico. Deve trattarsi della routine di lavoro principale per l'utilità di pianificazione.
virtual void Dispatch(_Inout_ DispatchState* pDispatchState) = 0;
Parametri
pDispatchState
Puntatore allo stato in cui viene inviato questo contesto di esecuzione. Per altre informazioni sullo stato di invio, vedere DispatchState.
Metodo IExecutionContext::GetId
Restituisce un identificatore univoco per il contesto di esecuzione.
virtual unsigned int GetId() const = 0;
Valore restituito
Identificatore integer univoco.
Osservazioni:
È consigliabile usare il metodo GetExecutionContextId
per ottenere un identificatore univoco per l'oggetto che implementa l'interfaccia, prima di usare l'interfaccia IExecutionContext
come parametro per i metodi forniti da Resource Manager. Si prevede di restituire lo stesso identificatore quando viene richiamata la GetId
funzione.
Un identificatore ottenuto da un'origine diversa potrebbe comportare un comportamento non definito.
Metodo IExecutionContext::GetProxy
Restituisce un'interfaccia al proxy di thread che esegue questo contesto.
virtual IThreadProxy* GetProxy() = 0;
Valore restituito
Interfaccia IThreadProxy
. Se il proxy del thread del contesto di esecuzione non è stato inizializzato con una chiamata a SetProxy
, la funzione deve restituire NULL
.
Osservazioni:
Resource Manager richiamerà il SetProxy
metodo in un contesto di esecuzione, con un'interfaccia IThreadProxy
come parametro, prima di immettere il Dispatch
metodo nel contesto. Si prevede di archiviare questo argomento e restituirlo nelle chiamate a GetProxy()
.
Metodo IExecutionContext::GetScheduler
Restituisce un'interfaccia all'utilità di pianificazione a cui appartiene questo contesto di esecuzione.
virtual IScheduler* GetScheduler() = 0;
Valore restituito
Interfaccia IScheduler
.
Osservazioni:
È necessario inizializzare il contesto di esecuzione con un'interfaccia valida IScheduler
prima di usarlo come parametro per i metodi forniti da Resource Manager.
Metodo IExecutionContext::SetProxy
Associa un proxy di thread a questo contesto di esecuzione. Il proxy del thread associato richiama questo metodo subito prima di iniziare l'esecuzione del metodo del Dispatch
contesto.
virtual void SetProxy(_Inout_ IThreadProxy* pThreadProxy) = 0;
Parametri
pThreadProxy
Interfaccia per il proxy di thread che sta per immettere il Dispatch
metodo in questo contesto di esecuzione.
Osservazioni:
Si prevede di salvare il parametro pThreadProxy
e restituirlo in una chiamata al GetProxy
metodo . Resource Manager garantisce che il proxy del thread associato al contesto di esecuzione non cambierà mentre il proxy del thread esegue il Dispatch
metodo .
Vedi anche
Spazio dei nomi concurrency
Struttura IScheduler
Struttura IThreadProxy