コンカレンシー ランタイムを明示的に認識する再入不可能なミューテックスです。
構文
class critical_section;
メンバー
パブリックTypedefs
| 名前 | 説明 |
|---|---|
native_handle_type |
critical_section オブジェクトへの参照です。 |
パブリック クラス
| 名前 | 説明 |
|---|---|
| critical_section::scoped_lock クラス |
critical_section オブジェクトの例外セーフな RAII ラッパー。 |
パブリック コンストラクター
| 名前 | 説明 |
|---|---|
| クリティカルセクション | 新しいクリティカル セクションを構築します。 |
| ~critical_section デストラクター | クリティカル セクションを破棄します。 |
パブリック メソッド
| 名前 | 説明 |
|---|---|
| ロック | このクリティカル セクションを取得します。 |
| native_handle | プラットフォーム固有のネイティブ ハンドルを返します (存在する場合)。 |
| try_lock | ブロックせずにロックの取得を試みます。 |
| try_lock_for | ブロックせずに、特定のミリ秒数でロックの取得を試みます。 |
| 解除 | クリティカル セクションのロックを解除します。 |
解説
詳細については、「同期データ構造」をご覧ください。
継承階層
critical_section
要件
ヘッダー: concrt.h
名前空間: concurrency
クリティカルセクション
新しいクリティカル セクションを構築します。
critical_section();
~クリティカルセクション
クリティカル セクションを破棄します。
~critical_section();
解説
デストラクターが実行されたときに、ロックが保持されていないことが求められます。 ロックを保持したままクリティカル セクションを破棄できるようにすると、未定義の動作が発生します。
ロックする
このクリティカル セクションを取得します。
void lock();
解説
多くの場合、scoped_lock コンストラクトを使用して、例外セーフな方法で critical_section オブジェクトを取得および解放する方が安全です。
呼び出し元コンテキストによってロックが既に保持されている場合、improper_lock 例外がスローされます。
ネイティブハンドル
プラットフォーム固有のネイティブ ハンドルを返します (存在する場合)。
native_handle_type native_handle();
戻り値
クリティカル セクションへの参照。
解説
critical_section オブジェクトは、Windows オペレーティング システムのプラットフォーム固有のネイティブ ハンドルに関連付けられていません。 このメソッドは、単にオブジェクト自体への参照を返します。
critical_section::scoped_lock クラス
critical_section オブジェクトの例外セーフな RAII ラッパー。
class scoped_lock;
scoped_lock::scoped_lock
scoped_lock オブジェクトを構築し、critical_section パラメーターで渡された _Critical_section オブジェクトを取得します。 クリティカル セクションが別のスレッドによって保持されている場合、この呼び出しはブロックされます。
explicit _CRTIMP scoped_lock(critical_section& _Critical_section);
パラメーター
_クリティカルセクション
クリティカルセクションをロックする。
scoped_lock::~scoped_lock
scoped_lock オブジェクトを破棄し、そのコンストラクターで提供されたクリティカル セクションを解放します。
~scoped_lock();
トライロック
ブロックせずにロックの取得を試みます。
bool try_lock();
戻り値
ロックが取得された場合は値 true、それ以外の場合は値 false。
try_lock_for
ブロックせずに、特定のミリ秒数でロックの取得を試みます。
bool try_lock_for(unsigned int _Timeout);
パラメーター
_Timeout
タイムアウトまでの待機時間 (ミリ秒単位)。
戻り値
ロックが取得された場合は値 true、それ以外の場合は値 false。
ロックの解除
クリティカル セクションのロックを解除します。
void unlock();