次の方法で共有


Context::Block メソッド

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

_CRTIMP static void __cdecl Block();

解説

呼び出し元のコンテキストにスケジューラが現在関連付けられていない場合、このメソッドを呼び出すと、プロセスの既定のスケジューラが作成されるか、または呼び出し元コンテキストにアタッチされます。

呼び出し元コンテキストが仮想プロセッサで実行されている場合、仮想プロセッサは別の実行可能なコンテキストを検出して実行するか、場合によっては新しいコンテキストを作成します。

Block メソッドを既に呼び出しているかこれから呼び出した後でそれをもう一度実行するには、別の実行コンテキストから呼び出した Unblock メソッドと組み合わせて使用する必要があります。 別のスレッドが Unblock メソッドを呼び出すことができるようにコードがそのコンテキストをパブリッシュする時点と、Block メソッドの呼び出しが実際に行われる時点の間に、重要な処理が実行されることに注意してください。 この期間中は、独自の理由 (ロックの取得など) でブロックとブロック解除を行う可能性のあるメソッドは呼び出さないでください。 Block メソッドと Unblock メソッドの呼び出しでは、ブロックとブロック解除の理由は追跡されません。 BlockUnblock のペアの所有権を持つオブジェクトは 1 つである必要があります。

このメソッドは、scheduler_resource_allocation_error など、さまざまな例外をスローする可能性があります。

必要条件

ヘッダー: concrt.h

名前空間: Concurrency

参照

参照

Context クラス

Context::Unblock メソッド

その他の技術情報

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