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) 那 样 的 同 步 对 象 的 , 这 些 对 象 允 许 对 一 个 被 控 制 资 源 进 行 多 个访 问 。