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 結構