次の方法で共有


CriticalSection クラス

クリティカル セクション オブジェクトを表します。

構文

class CriticalSection;

メンバー

コンストラクター

名前 説明
CriticalSection::CriticalSection ミューテックス オブジェクトに似ているが、単一のプロセスのスレッドでのみ使用できる同期オブジェクトを初期化します。
CriticalSection::~CriticalSection 現在の CriticalSection オブジェクトを初期化解除して破棄します。

パブリック メソッド

名前 説明
CriticalSection::IsValid 現在のクリティカル セクションが有効かどうかを示します。
CriticalSection::Lock 指定したクリティカル セクション オブジェクトの所有権を待機します。 この関数は、呼び出し元のスレッドに所有権が付与されたときに返されます。
CriticalSection::TryLock ブロックせずにクリティカル セクションの入力を試します。 呼び出しが成功すると、呼び出し元のスレッドはクリティカル セクションの所有権を取得します。

プロテクト データ メンバー

名前 説明
CriticalSection::cs_ クリティカル セクションのデータ メンバーを宣言します。

継承階層

CriticalSection

要件

ヘッダー: corewrappers.h

名前空間: Microsoft::WRL::Wrappers

CriticalSection::~CriticalSection

現在の CriticalSection オブジェクトを初期化解除して破棄します。

WRL_NOTHROW ~CriticalSection();

CriticalSection::CriticalSection

ミューテックス オブジェクトに似ているが、単一のプロセスのスレッドでのみ使用できる同期オブジェクトを初期化します。

explicit CriticalSection(
   ULONG spincount = 0
);

パラメーター

spincount
クリティカル セクション オブジェクトのスピン カウント。 既定値は0です。

解説

重要なセクションとスピンカウントの詳細については、Windows API ドキュメントのSynchronizationセクションのInitializeCriticalSectionAndSpinCount関数を参照してください。

CriticalSection::cs_

クリティカル セクションのデータ メンバーを宣言します。

CRITICAL_SECTION cs_;

解説

このデータ メンバーは保護されています。

CriticalSection::IsValid

現在のクリティカル セクションが有効かどうかを示します。

bool IsValid() const;

戻り値

既定では、常に true を返します。

CriticalSection::Lock

指定したクリティカル セクション オブジェクトの所有権を待機します。 この関数は、呼び出し元のスレッドに所有権が付与されたときに返されます。

SyncLock Lock();

   static SyncLock Lock(
   _In_ CRITICAL_SECTION* cs
);

パラメーター

cs
ユーザー指定のクリティカル セクション オブジェクト。

戻り値

現在のクリティカル セクションをロックを解除するために使用できるロック オブジェクト。

解説

最初の Lock 関数は、現在のクリティカル セクション オブジェクトに影響します。 2 番目の Lock 関数は、ユーザー指定のクリティカル セクションに影響します。

CriticalSection::TryLock

ブロックせずにクリティカル セクションの入力を試します。 呼び出しが成功すると、呼び出し元のスレッドはクリティカル セクションの所有権を取得します。

SyncLock TryLock();

static SyncLock TryLock(
   _In_ CRITICAL_SECTION* cs
);

パラメーター

cs
ユーザー指定のクリティカル セクション オブジェクト。

戻り値

クリティカル セクションが正常に入力された場合、または現在のスレッドが既にクリティカル セクションを所有している場合は、0 以外の値。 別のスレッドが既にクリティカル セクションを所有している場合は 0。

解説

最初の TryLock 関数は、現在のクリティカル セクション オブジェクトに影響します。 2 番目の TryLock 関数は、ユーザー指定のクリティカル セクションに影響します。