共用方式為


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 不會變更。

另請參閱

concurrency 命名空間
IScheduler 結構
IThreadProxy 結構