Microsoft DirectX 8.0 |
スレッドのロックを提供する。
宣言 : Wxutil.h
このクラスはクリティカル セクションのラッパーである。Lock および Unlock メソッドを呼び出すことによって、スレッドをロックおよびロック解除することができる。ただし、このクラスと CAutoLock クラスを組み合わせて使用する方が安全である。CAutoLock クラスがスコープの範囲外である場合は、自動的に CCritSec オブジェクトのロックを解除する。さらに、効率的なインライン コードにコンパイルする。
Puvlic メンバ変数 | |
---|---|
m_currentOwner | 所有するスレッドのスレッド識別子。 |
m_lockCount | このオブジェクトについて未処理のロックの数。 |
m_fTrace | このロックをトレースするかどうかを指定するブール型の値。 |
Public メソッド | |
CCritSec | コンストラクタ メソッド。 |
~CCritSec | デストラクタ メソッド。 |
Lock | クリティカル セクション オブジェクトをロックする。 |
Unlock | クリティカル セクション オブジェクトのロックを解除する。 |
所有するスレッドのスレッド識別子。
構文
DWORD m_currentOwner;
注意
このメンバ変数は、基底クラスのデバッグ バージョンでのみ定義される。CCritSec debug 関数はこのメンバを使用する。
このオブジェクトについて未処理のロックの数。
構文
DWORD m_lockCount;
注意
このメンバ変数は、基底クラスのデバッグ バージョンでのみ定義される。CCritSec debug 関数はこのメンバを使用する。
このロックをトレースするかどうかを指定するブール型の値。
構文
BOOL m_fTrace;
注意
このメンバ変数は、基底クラスのデバッグ バージョンでのみ定義される。この変数が TRUE の場合、ロック状態のトレースがデバッグ ログに書き込まれる。クリティカル セクションのデバッグ ログがアクティブでなければならない。詳細については、「DbgLockTrace」を参照すること。
コンストラクタ メソッド。
構文
CCritSec(void);
注意
このメソッドは、Microsoft® Win32® InitializeCriticalSection 関数を呼び出して、クリティカル セクションを初期化する。
デストラクタ メソッド。
構文
~CCritSec(void);
注意
このメソッドは、Microsoft® Win32® DeleteCriticalSection 関数を呼び出して、クリティカル セクションを削除する。
クリティカル セクション オブジェクトをロックする。
構文
void Lock(void);
戻り値
戻り値なし。
注意
このメソッドは、Microsoft® Win32® EnterCriticalSection メソッドを呼び出す。
クリティカル セクションのロックを解除するには、CCritSec::Unlock メンバ関数を呼び出す。同じスレッドについて、Lock メソッドを複数呼び出すことができる。同じ回数だけ Unlock 呼び出す必要がある。
オブジェクトが既に別のスレッドによってロックされている場合、CCritSec::Lock メソッドは、そのオブジェクトが解放されるまで、または可能性のあるデッドロック例外が発生するまでブロックする。
クリティカル セクション オブジェクトのロックを解除する。
構文
void Unlock(void);
戻り値
戻り値なし。
注意
このメソッドは、Microsoft® Win32® LeaveCriticalSection メソッドを呼び出す。
Lock メソッドの各呼び出しについて、このメソッドを 1 回呼び出す。