CSyncObject 类
一个纯虚拟类,提供 Win32 中的同步对象所共有的功能。
语法
class CSyncObject : public CObject
成员
公共构造函数
名称 | 描述 |
---|---|
CSyncObject::CSyncObject | 构造 CSyncObject 对象。 |
公共方法
名称 | 描述 |
---|---|
CSyncObject::Lock | 获取对同步对象的访问权限。 |
CSyncObject::Unlock | 获取对同步对象的访问权限。 |
公共运算符
“属性” | 描述 |
---|---|
CSyncObject::operator HANDLE | 提供对同步对象的访问权限。 |
公共数据成员
“属性” | 描述 |
---|---|
CSyncObject::m_hObject | 基础同步对象的句柄。 |
备注
Microsoft 基础类库提供了几个派生自 CSyncObject
的类。 这些是 CEvent、CMutex、CCriticalSection 和 CSemaphore。
有关如何使用同步对象的信息,请参阅多线程:如何使用同步类一文。
继承层次结构
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。 调用此函数,以释放对调用线程拥有的同步对象的访问权限。 第二个声明用于同步对象,例如允许对受控资源进行多次访问的信号灯。