IExecutionContext – struktura
Rozhraní pro kontext spuštění, který může běžet na daném virtuálním procesoru a být kooperačně kontextový.
Syntaxe
struct IExecutionContext;
Členové
Veřejné metody
Název | Popis |
---|---|
IExecutionContext::D ispatch | Volá se metoda, která se volá, když proxy vlákna spustí konkrétní kontext spuštění. Toto by měla být hlavní rutina pracovního procesu pro váš plánovač. |
IExecutionContext::GetId | Vrátí jedinečný identifikátor kontextu spuštění. |
IExecutionContext::GetProxy | Vrátí rozhraní proxy vláken, které spouští tento kontext. |
IExecutionContext::GetScheduler | Vrátí rozhraní plánovače, do které patří tento kontext spuštění. |
IExecutionContext::SetProxy | Přidruží proxy vlákno k tomuto kontextu spuštění. Přidružený proxy vlákno vyvolá tuto metodu přímo před spuštěním metody kontextu Dispatch . |
Poznámky
Pokud implementujete vlastní plánovač, který je součástí Resource Manageru modulu Concurrency Runtime, budete muset rozhraní implementovat IExecutionContext
. Vlákna vytvořená Resource Managerem provádějí práci jménem vašeho plánovače spuštěním IExecutionContext::Dispatch
metody.
Hierarchie dědičnosti
IExecutionContext
Požadavky
Hlavička: concrtrm.h
Namespace: souběžnost
IExecutionContext::D ispatch – metoda
Volá se metoda, která se volá, když proxy vlákna spustí konkrétní kontext spuštění. Toto by měla být hlavní rutina pracovního procesu pro váš plánovač.
virtual void Dispatch(_Inout_ DispatchState* pDispatchState) = 0;
Parametry
pDispatchState
Ukazatel na stav, pod kterým se tento kontext spuštění odesílá. Další informace o stavu odeslání naleznete v tématu DispatchState.
IExecutionContext::GetId – metoda
Vrátí jedinečný identifikátor kontextu spuštění.
virtual unsigned int GetId() const = 0;
Návratová hodnota
Jedinečný celočíselnou identifikátor.
Poznámky
Tuto metodu GetExecutionContextId
byste měli použít k získání jedinečného identifikátoru objektu, který implementuje IExecutionContext
rozhraní, než rozhraní použijete jako parametr pro metody poskytované Resource Managerem. Očekává se, že při GetId
vyvolání funkce vrátíte stejný identifikátor.
Identifikátor získaný z jiného zdroje může mít za následek nedefinované chování.
IExecutionContext::GetProxy – metoda
Vrátí rozhraní proxy vláken, které spouští tento kontext.
virtual IThreadProxy* GetProxy() = 0;
Návratová hodnota
Rozhraní IThreadProxy
. Pokud proxy vlákna kontextu spuštění nebylo inicializováno voláním SetProxy
, funkce musí vrátit NULL
.
Poznámky
Resource Manager vyvolá metodu SetProxy
v kontextu spuštění s IThreadProxy
rozhraním jako parametrem před zadáním Dispatch
metody v kontextu. Očekává se, že tento argument uložíte a vrátíte ho při volání GetProxy()
.
IExecutionContext::GetScheduler – metoda
Vrátí rozhraní plánovače, do které patří tento kontext spuštění.
virtual IScheduler* GetScheduler() = 0;
Návratová hodnota
Rozhraní IScheduler
.
Poznámky
Než ho použijete jako parametr pro metody poskytované Resource Managerem, musíte inicializovat kontext spuštění platným IScheduler
rozhraním.
IExecutionContext::SetProxy – metoda
Přidruží proxy vlákno k tomuto kontextu spuštění. Přidružený proxy vlákno vyvolá tuto metodu přímo před spuštěním metody kontextu Dispatch
.
virtual void SetProxy(_Inout_ IThreadProxy* pThreadProxy) = 0;
Parametry
pThreadProxy
Rozhraní pro proxy vlákna, které se chystá zadat metodu Dispatch
v tomto kontextu spuštění.
Poznámky
Očekává se, že parametr uložíte pThreadProxy
a vrátíte ho GetProxy
při volání metody. Resource Manager zaručuje, že proxy vlákna přidružené k kontextu spuštění se nezmění, když proxy vlákna provádí metodu Dispatch
.
Viz také
concurrency – obor názvů
IScheduler – struktura
IThreadProxy – struktura