次の方法で共有


CSyncObject クラス

Win32 の同期オブジェクトに共通の機能を提供する純粋仮想クラスです。

構文

class CSyncObject : public CObject

メンバー

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

名前 説明
CSyncObject::CSyncObject CSyncObject オブジェクトを構築します。

パブリック メソッド

名前 説明
CSyncObject::Lock 同期オブジェクトへのアクセスを取得します。
CSyncObject::Unlock 同期オブジェクトへのアクセスを取得します。

パブリック演算子

名前 説明
CSyncObject::operator HANDLE 同期オブジェクトへのアクセスを提供します。

パブリック データ メンバー

名前 説明
CSyncObject::m_hObject 基になる同期オブジェクトへのハンドル。

解説

Microsoft Foundation クラス ライブラリには、 CSyncObjectから派生したクラスがいくつか用意されています。 これらは、 CEventCMutexCCriticalSection、および CSemaphore です。

同期オブジェクトの使用方法については、「 Multithreading: How to Use the Synchronization Classes」を参照してください。

継承階層

CObject

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 番目の宣言は、制御されたリソースの複数のアクセスを許可するセマフォなどの同期オブジェクトに対して提供されます。

関連項目

CObject クラス
階層図