Sdílet prostřednictvím


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