次の方法で共有


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 メソッドを実行している間は、実行コンテキストに関連付けられているスレッド プロキシが変更されないことが保証されます。

関連項目

コンカレンシー名前空間
IScheduler 構造体
IThreadProxy 構造体