IExecutionContext 構造体
特定の仮想プロセッサで実行でき、協調的にコンテキストを切り替えることができる実行コンテキストへのインターフェイスです。
構文
struct IExecutionContext;
メンバー
パブリック メソッド
名前 | 説明 |
---|---|
IExecutionContext::Dispatch | スレッド プロキシが特定の実行コンテキストの実行を開始するときに呼び出されるメソッド。 これは、スケジューラのメイン ワーカー ルーチンである必要があります。 |
IExecutionContext::GetId | 実行コンテキストの一意識別子を返します。 |
IExecutionContext::GetProxy | このコンテキストを実行しているスレッド プロキシへのインターフェイスを返します。 |
IExecutionContext::GetScheduler | この実行コンテキストが属するスケジューラへのインターフェイスを返します。 |
IExecutionContext::SetProxy | スレッド プロキシをこの実行コンテキストに関連付けます。 関連付けられたスレッド プロキシは、コンテキストの Dispatch メソッドの実行を開始する直前に、このメソッドを呼び出します。 |
解説
同時実行ランタイムの Resource Manager とのインターフェイスとなるカスタム スケジューラを実装する場合は、IExecutionContext
インターフェイスを実装する必要があります。 Resource Manager によって作成されたスレッドは、IExecutionContext::Dispatch
メソッドを実行することによって、スケジューラに代わって処理を実行します。
継承階層
IExecutionContext
要件
ヘッダー: concrtrm.h
名前空間: concurrency
IExecutionContext::D ispatch メソッド
スレッド プロキシが特定の実行コンテキストの実行を開始するときに呼び出されるメソッド。 これは、スケジューラのメイン ワーカー ルーチンである必要があります。
virtual void Dispatch(_Inout_ DispatchState* pDispatchState) = 0;
パラメーター
pDispatchState
この実行コンテキストがディスパッチされている状態へのポインター。 ディスパッチ状態の詳細については、DispatchState に関する記事を参照してください。
IExecutionContext::GetId メソッド
実行コンテキストの一意識別子を返します。
virtual unsigned int GetId() const = 0;
戻り値
一意の整数識別子。
解説
Resource Manager によって提供されるメソッドのパラメーターとして IExecutionContext
インターフェイスを使用する前に、GetExecutionContextId
メソッドを使用して、このインターフェイスを実装するオブジェクトの一意識別子を取得する必要があります。 GetId
関数が呼び出されたときに、同じ識別子を返すことが求められます。
別のソースから取得した識別子を使用すると、未定義の動作が発生する可能性があります。
IExecutionContext::GetProxy メソッド
このコンテキストを実行しているスレッド プロキシへのインターフェイスを返します。
virtual IThreadProxy* GetProxy() = 0;
戻り値
IThreadProxy
インターフェイスです。 実行コンテキストのスレッド プロキシが、SetProxy
の呼び出しで初期化されていない場合、この関数は NULL
を返す必要があります。
解説
Resource Manager は、実行コンテキストで Dispatch
メソッドに入る前に、パラメーターとして IThreadProxy
インターフェイスを使用して、そのコンテキストで SetProxy
メソッドを呼び出します。 この引数を保存し、GetProxy()
の呼び出しでそれを返す必要があります。
IExecutionContext::GetScheduler メソッド
この実行コンテキストが属するスケジューラへのインターフェイスを返します。
virtual IScheduler* GetScheduler() = 0;
戻り値
IScheduler
インターフェイスです。
解説
Resource Manager によって提供されるメソッドのパラメーターとして IScheduler
インターフェイスを使用する前に、有効なこのインターフェイスで実行コンテキストを初期化する必要があります。
IExecutionContext::SetProxy メソッド
スレッド プロキシをこの実行コンテキストに関連付けます。 関連付けられたスレッド プロキシは、コンテキストの Dispatch
メソッドの実行を開始する直前に、このメソッドを呼び出します。
virtual void SetProxy(_Inout_ IThreadProxy* pThreadProxy) = 0;
パラメーター
pThreadProxy
この実行コンテキストで Dispatch
メソッドに入ろうとしているスレッド プロキシへのインターフェイス。
解説
pThreadProxy
パラメーターを保存し、GetProxy
メソッドの呼び出しでそれを返す必要があります。 Resource Manager により、スレッド プロキシが Dispatch
メソッドを実行している間は、実行コンテキストに関連付けられているスレッド プロキシが変更されないことが保証されます。