次の方法で共有


Context クラス

実行コンテキストの抽象化を表します。

class Context;

メンバー

パブリック メソッド

名前

説明

Context::Block メソッド

現在のコンテキストをブロックします。

Context::CurrentContext メソッド

現在のコンテキストへのポインターを返します。

Context::GetId メソッド

コンテキストが属するスケジューラ内で一意のコンテキストの識別子を返します。

Context::GetScheduleGroupId メソッド

コンテキストが現在実行されているスケジュール グループの識別子を返します。

Context::GetVirtualProcessorId メソッド

コンテキストが現在実行されている仮想プロセッサの識別子を返します。

Context::Id メソッド

現在のコンテキストが属するスケジューラ内で一意の現在のコンテキストの識別子を返します。

Context::IsCurrentTaskCollectionCanceling メソッド

現在のコンテキストで現在インラインで実行されているタスク コレクションがアクティブなキャンセル処理中である (または間もなくキャンセル処理が開始される) かどうかを示す値を返します。

Context::IsSynchronouslyBlocked メソッド

コンテキストが同期的にブロックされているかどうかを判断します。 コンテキストがブロックを引き起こしたアクションを明示的に実行した場合、そのコンテキストは同期的にブロックされていると見なされます。

Context::Oversubscribe メソッド

スケジューラの仮想プロセッサのいずれかで実行されるコンテキストで呼び出された場合に、コード ブロックの期間中、追加の仮想プロセッサをそのスケジューラに挿入します。

Context::ScheduleGroupId メソッド

現在のコンテキストが実行されているスケジュール グループの識別子を返します。

Context::Unblock メソッド

コンテキストのブロックを解除し、実行できるようにします。

Context::VirtualProcessorId メソッド

現在のコンテキストが実行されている仮想プロセッサの識別子を返します。

Context::Yield メソッド

別のコンテキストが実行できるように実行を譲歩します。 実行の権利を譲る他のコンテキストが存在しない場合、スケジューラによって別のオペレーティング システム スレッドに明け渡されます。

プロテクト演算子

名前

説明

Context::operator delete 演算子

Context オブジェクトはランタイムによって内部的に破棄されます。 明示的には削除されません。

解説

同時実行ランタイム スケジューラ (「Scheduler」を参照してください) は、実行コンテキストを使用して、アプリケーションによってキューに入れられた作業を実行します。 Win32 スレッドとユーザー モード スケジュール可能 (UMS: User Mode Schedulable) スレッドは、Windows オペレーティング システム上の実行コンテキストの例です。 UMS スレッドは、Windows 7 以上のバージョンの 64 ビット オペレーティング システムでのみサポートされます。

スケジューラの同時実行レベルは、リソース マネージャーによって許可された仮想プロセッサの数と常に等しくなります。 仮想プロセッサとは、処理リソースを抽象化したものであり、基になるシステムのハードウェア スレッドに対応しています。 指定された時点に 1 つの仮想プロセッサで実行できるスケジューラ コンテキストは 1 つのみです。

スケジューラは本質的に協調的であるため、実行コンテキストが待機状態になると、常に仮想プロセッサを別のコンテキストに渡す可能性があります。 待機状態が終了すると、スケジューラの使用可能な仮想プロセッサが実行を開始するまで再開できません。

継承階層

コンテキスト

必要条件

ヘッダー: concrt.h

名前空間: Concurrency

参照

参照

Concurrency 名前空間

Scheduler クラス

その他の技術情報

タスク スケジューラ (同時実行ランタイム)