Share via


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