IExecutionContext 結構
執行內容的介面,可於指定的虛擬處理器上執行,也可以合作方式切換內容。
語法
struct IExecutionContext;
成員
公用方法
名稱 | 描述 |
---|---|
IExecutionContext::D ispatch | 線程 Proxy 開始執行特定執行內容時所呼叫的方法。 這應該是排程器的主要背景工作例程。 |
IExecutionContext::GetId | 傳回執行內容的唯一標識碼。 |
IExecutionContext::GetProxy | 傳回執行此內容的線程 Proxy 介面。 |
IExecutionContext::GetScheduler | 傳回這個執行內容所屬之排程器的介面。 |
IExecutionContext::SetProxy | 將線程 Proxy 與此執行內容產生關聯。 相關聯的線程 Proxy 會在開始執行內容 Dispatch 的方法之前,立即叫用這個方法。 |
備註
如果您要實作與並行運行時間 Resource Manager 介面的自定義排程器,則必須實 IExecutionContext
作 介面。 Resource Manager 所建立的線程會藉由執行 方法,代表排程器執行 IExecutionContext::Dispatch
工作。
繼承階層架構
IExecutionContext
需求
標頭: concrtrm.h
命名空間: concurrency
IExecutionContext::D ispatch 方法
線程 Proxy 開始執行特定執行內容時所呼叫的方法。 這應該是排程器的主要背景工作例程。
virtual void Dispatch(_Inout_ DispatchState* pDispatchState) = 0;
參數
pDispatchState
要分派此執行內容之狀態的指標。 如需分派狀態的詳細資訊,請參閱 DispatchState。
IExecutionContext::GetId 方法
傳回執行內容的唯一標識碼。
virtual unsigned int GetId() const = 0;
傳回值
唯一的整數標識碼。
備註
您應該使用 方法 GetExecutionContextId
來取得實作 介面之物件 IExecutionContext
的唯一標識符,再使用 介面做為 Resource Manager 提供之方法的參數。 叫用函式時 GetId
,您應該傳回相同的標識碼。
從不同來源取得的標識碼可能會導致未定義的行為。
IExecutionContext::GetProxy 方法
傳回執行此內容的線程 Proxy 介面。
virtual IThreadProxy* GetProxy() = 0;
傳回值
IThreadProxy
介面。 如果執行內容的線程 Proxy 尚未使用 對的呼叫 SetProxy
初始化,則函式必須傳回 NULL
。
備註
在內容上輸入 Dispatch
方法之前,Resource Manager 會在SetProxy
執行內容上使用 介面做為參數叫用 IThreadProxy
方法。 您應該儲存這個自變數,並在呼叫 GetProxy()
時傳回它。
IExecutionContext::GetScheduler 方法
傳回這個執行內容所屬之排程器的介面。
virtual IScheduler* GetScheduler() = 0;
傳回值
IScheduler
介面。
備註
您必須先使用有效的 IScheduler
介面初始化執行內容,才能將它當做 Resource Manager 所提供方法的參數。
IExecutionContext::SetProxy 方法
將線程 Proxy 與此執行內容產生關聯。 相關聯的線程 Proxy 會在開始執行內容 Dispatch
的方法之前,立即叫用這個方法。
virtual void SetProxy(_Inout_ IThreadProxy* pThreadProxy) = 0;
參數
pThreadProxy
即將在此執行內容上輸入 方法之線程 Proxy 的 Dispatch
介面。
備註
您應該儲存 參數 pThreadProxy
,並在呼叫 GetProxy
方法時傳回它。 Resource Manager 保證線程 Proxy 在執行 方法時,與執行內容相關聯的線程 Proxy Dispatch
不會變更。