CSyn c Ob ject
CSyn c Object 类 是 一 个 纯 虚 类 , 它 提 供 了 对 于 Win32 中 的 同 步 对 象 来 说 通 用 的性 能 。 M icrosoft 基 础 类 库 提 供 了 几 个 从 CSyn c Object 派 生 的 类 。 这 些 类 是CEven t, CMutex , CCriticalSection , 和 CSemaphore 。
有 关 如 何 使 用 同 步 对 象 的 信 息 , 请 参 见“ V isual C++ 程 序 员 指 南 ” 中 的 文 章 “ 多线 程 : 如 何 使 用 同 步 类 ” 。
#include <afxmt.h>
CSyn c Object 类 对 象
Construction
CsyncObject 构 造 一 个 CSyncObject 对 象
Method s Lock 获 得 对 该 同 步 对 象 的 访 问
Unlock 释 放 对 该 同 步 对 象 的 访 问
Attribute s OperatorHANDLE 获 得 对 该 同 步 对 象 的 访 问
成 员 函 数
CSyncObject:: CSyncObject
CSyncObject( LPCTSTR pstrName ); virtual ~CSyncObject( );
参 数
pstrName
对 象 的 名 字 。 如 果 是 NULL , 则 pstrName 将 是 空 。
说 明
此 成 员 函 数 用 来 构 造 一 个 具 有 给 定 名 字 的 同 步 对 象 。
CSyncObject::Lock
virtual BOOL Lock( DWORD dwTimeout = INFINITE );
返 回 值
如 果 函 数 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。
参 数
dwTimeout
指 定 等 待 此 同 步 对 象 变 为 可 用( 发 信 号 的 ) 的 时 间 量 。 如 果 是 INFINITE , 则 Lock 一 直 等 待 直 到 对 象 在 返 回 前 变 为 有 效 。
说 明
此 成 员 函 数 用 来 获 得 对 该 同 步 对 象 控 制 的 资 源 的 访 问 。 如 果 该 同 步 对 象 是 可 用
象 不 可 用 , 则 Lock 将在 dwTimeOut 参 数 指 定 的 毫 秒 数 内 等 待 此 同 步 对 象 变 为可 用 。 如 果 这 个 同 步 对 象 在 指 定 量 的 时 间 内 没 有 变 为 可 用 的 , 则 Lock 返 回 失败 。
CSyncObject::operator HANDLE
operator HANDLE( ) const;
返 回 值
如 果 成 功 , 则 返 回 此 同 步 对 象 的 句 柄 ; 否 则 返 回 NULL 。
说 明
此 操 作 符 用 来 获 取 此 CSyncObject 对 象 的 句 柄 。 你 可 以 用 这 个 句 柄 来 直 接 调 用
CSyncObject::Unlock
virtual BOOL Unlock( ) = 0;
virtual BOOL Unlock( LONG lCount, LPLONG lpPrevCount = NULL );
返 回 值
此 函 数 的 缺 省 实 现 总 是 返 回 TRUE 。
参 数
lCount
缺 省 实 现 不 使 用 这 个 参 数 。
lpPrevCount
缺 省 实 现 不 使 用 这 个 参 数 。
说 明
Unlock 的 不 带 参 数 的 声 明 是 一 个 纯 虚 函 数 , 所 有 从 CSyn c Object 派 生 的 类 都 必须 重 载 它 。 带 有 两 个 参 数 的 缺 省 实 现 总 是 返 回 TRUE 。 这 个 成 员 函 数 用 来 释 放由 调 用 线 程 所 拥 有 的 同 步 对 象 的 访 问 。 第 二 个 声 明 是 提 供 给 像 信 号
( semaphores) 那 样 的 同 步 对 象 的 , 这 些 对 象 允 许 对 一 个 被 控 制 资 源 进 行 多 个访 问 。