次の方法で共有


critical_section クラス

コンカレンシー ランタイムを明示的に認識する再入不可能なミューテックスです。

構文

class critical_section;

メンバー

パブリック typedef

名前 説明
native_handle_type critical_section オブジェクトへの参照です。

パブリック クラス

名前 説明
critical_section::scoped_lock クラス critical_section オブジェクトの例外セーフな RAII ラッパー。

パブリック コンストラクター

名前 説明
critical_section 新しいクリティカル セクションを構築します。
~critical_section デストラクター クリティカル セクションを破棄します。

パブリック メソッド

名前 説明
lock このクリティカル セクションを取得します。
native_handle プラットフォーム固有のネイティブ ハンドルを返します (存在する場合)。
try_lock ブロックせずにロックの取得を試みます。
try_lock_for 特定の時間 (ミリ秒単位)、ブロックせずにロックの取得を試みます。
unlock クリティカル セクションのロックを解除します。

解説

詳細については、「同期データ構造」をご覧ください。

継承階層

critical_section

要件

ヘッダー: concrt.h

名前空間: concurrency

critical_section

新しいクリティカル セクションを構築します。

critical_section();

~critical_section

クリティカル セクションを破棄します。

~critical_section();

解説

デストラクターが実行されたときに、ロックが保持されていないことが求められます。 ロックを保持したままクリティカル セクションを破棄できるようにすると、未定義の動作が発生します。

lock

このクリティカル セクションを取得します。

void lock();

解説

多くの場合、scoped_lock コンストラクトを使用して、例外セーフな方法で critical_section オブジェクトを取得および解放する方が安全です。

呼び出し元コンテキストによってロックが既に保持されている場合、improper_lock 例外がスローされます。

native_handle

プラットフォーム固有のネイティブ ハンドルを返します (存在する場合)。

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);

パラメーター

_Critical_section
ロックするクリティカル セクション。

scoped_lock::~scoped_lock

scoped_lock オブジェクトを破棄し、そのコンストラクターで提供されたクリティカル セクションを解放します。

~scoped_lock();

try_lock

ブロックせずにロックの取得を試みます。

bool try_lock();

戻り値

ロックが取得された場合は値 true、それ以外の場合は値 false

try_lock_for

特定の時間 (ミリ秒単位)、ブロックせずにロックの取得を試みます。

bool try_lock_for(unsigned int _Timeout);

パラメーター

_Timeout
タイムアウトまでの待機時間 (ミリ秒単位)。

戻り値

ロックが取得された場合は値 true、それ以外の場合は値 false

ロック解除

クリティカル セクションのロックを解除します。

void unlock();

関連項目

コンカレンシー名前空間
reader_writer_lock クラス