CSyncObject クラス
Win32 の同期オブジェクトに共通の機能を提供する純粋仮想クラスです。
構文
class CSyncObject : public CObject
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
CSyncObject::CSyncObject | CSyncObject オブジェクトを構築します。 |
パブリック メソッド
名前 | 説明 |
---|---|
CSyncObject::Lock | 同期オブジェクトへのアクセスを取得します。 |
CSyncObject::Unlock | 同期オブジェクトへのアクセスを取得します。 |
パブリック演算子
名前 | 説明 |
---|---|
CSyncObject::operator HANDLE | 同期オブジェクトへのアクセスを提供します。 |
パブリック データ メンバー
名前 | 説明 |
---|---|
CSyncObject::m_hObject | 基になる同期オブジェクトへのハンドル。 |
解説
Microsoft Foundation クラス ライブラリには、 CSyncObject
から派生したクラスがいくつか用意されています。 これらは、 CEvent、 CMutex、 CCriticalSection、および CSemaphore です。
同期オブジェクトの使用方法については、「 Multithreading: How to Use the Synchronization Classes」を参照してください。
継承階層
CSyncObject
要件
Header: afxmt.h
CSyncObject::CSyncObject
指定された名前を持つ同期オブジェクトを構築します。
explicit CSyncObject(LPCTSTR pstrName);
virtual ~CSyncObject();
パラメーター
pstrName
オブジェクトの名前。 NULL の場合、 pstrName は null になります。
CSyncObject::Lock
同期オブジェクトによって制御されるリソースにアクセスするには、この関数を呼び出します。
virtual BOOL Lock(DWORD dwTimeout = INFINITE);
パラメーター
dwTimeout
同期オブジェクトが使用可能になるまで待機する時間 (シグナル通知) をミリ秒単位で指定します。 INFINITE の場合、 Lock
はオブジェクトが通知されるまで待機してから戻ります。
戻り値
関数が成功した場合は 0 以外。それ以外の場合は 0。
解説
同期オブジェクトが通知されると、 Lock
は正常に返され、スレッドがオブジェクトを所有するようになりました。 同期オブジェクトが非署名 (使用不可) の場合、 Lock
は、同期オブジェクトが dwTimeOut パラメーターで指定されたミリ秒数まで通知されるまで待機します。 指定した時間内に同期オブジェクトが通知されなかった場合、 Lock
はエラーを返します。
CSyncObject::m_hObject
基になる同期オブジェクトへのハンドル。
HANDLE m_hObject;
CSyncObject::operator HANDLE
この演算子を使用して、 CSyncObject
オブジェクトのハンドルを取得します。
operator HANDLE() const;
戻り値
成功した場合は、同期オブジェクトのハンドル。それ以外の場合は NULL。
解説
このハンドルを使用して、Windows API を直接呼び出すことができます。
CSyncObject::Unlock
パラメーターのない Unlock
の宣言は純粋な仮想関数であり、 CSyncObject
から派生するすべてのクラスによってオーバーライドされる必要があります。
virtual BOOL Unlock() = 0; virtual BOOL Unlock(
LONG lCount,
LPLONG lpPrevCount = NULL);
パラメーター
lCount
既定の実装では使用されません。
lpPrevCount
既定の実装では使用されません。
戻り値
既定の実装では常に TRUE が返されます。
解説
2 つのパラメーターを持つ宣言の既定の実装では、常に TRUE が返されます。 この関数は、呼び出し元スレッドが所有する同期オブジェクトへのアクセスを解放するために呼び出されます。 2 番目の宣言は、制御されたリソースの複数のアクセスを許可するセマフォなどの同期オブジェクトに対して提供されます。