CSyncObject 类

一个纯虚拟类,提供 Win32 中的同步对象所共有的功能。

语法

class CSyncObject : public CObject

成员

公共构造函数

名称 描述
CSyncObject::CSyncObject 构造 CSyncObject 对象。

公共方法

名称 描述
CSyncObject::Lock 获取对同步对象的访问权限。
CSyncObject::Unlock 获取对同步对象的访问权限。

公共运算符

“属性” 描述
CSyncObject::operator HANDLE 提供对同步对象的访问权限。

公共数据成员

“属性” 描述
CSyncObject::m_hObject 基础同步对象的句柄。

备注

Microsoft 基础类库提供了几个派生自 CSyncObject 的类。 这些是 CEventCMutexCCriticalSectionCSemaphore

有关如何使用同步对象的信息,请参阅多线程:如何使用同步类一文。

继承层次结构

CObject

CSyncObject

要求

标头: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。

备注

如果同步对象有信号,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。

备注

具有两个参数的声明的默认实现始终返回 TRUE。 调用此函数,以释放对调用线程拥有的同步对象的访问权限。 第二个声明用于同步对象,例如允许对受控资源进行多次访问的信号灯。

另请参阅

CObject 类
层次结构图