CComCriticalSection 类

此类提供用于获取和释放临界区对象所有权的方法。

语法

class CComCriticalSection

成员

公共构造函数

名称 描述
CComCriticalSection::CComCriticalSection 构造函数。

公共方法

名称 描述
CComCriticalSection::Init 创建并初始化临界区对象。
CComCriticalSection::Lock 获取临界区对象的所有权。
CComCriticalSection::Term 释放临界区对象使用的系统资源。
CComCriticalSection::Unlock 获取临界区对象的所有权。

公共数据成员

“属性” 描述
CComCriticalSection::m_sec CRITICAL_SECTION 对象。

注解

CComCriticalSection 类似于 CComAutoCriticalSection 类,只不过必须显式初始化并释放临界区。

通常,通过 typedef 名称 AutoCriticalSection 使用 CComCriticalSection。 使用 CComMultiThreadModel 时,此名称引用 CComCriticalSection

请参阅 CComCritSecLock 类,获取此类,此方法比直接调用 LockUnlock 更安全。

要求

标头:atlcom.h

CComCriticalSection::CComCriticalSection

构造函数。

CComCriticalSection() throw();

备注

m_sec 数据成员设置为 NULL。

CComCriticalSection::Init

调用 Win32 函数 InitializeCriticalSection,它会初始化 m_sec 中包含的临界区对象。

HRESULT Init() throw();

返回值

如果成功,返回 S_OK;如果失败,返回 E_OUTOFMEMORY 或 E_FAIL。

CComCriticalSection::Lock

调用 Win32 函数 EnterCriticalSection,等待线程获取 m_sec 数据成员中包含的关键节对象的所有权。

HRESULT Lock() throw();

返回值

如果成功,返回 S_OK;如果失败,返回 E_OUTOFMEMORY 或 E_FAIL。

备注

临界区对象必须首先调用 Init 方法进行初始化。 当受保护的代码完成执行后,线程必须调用 Unlock 才能释放临界区的所有权。

CComCriticalSection::m_sec

包含所有 CComCriticalSection 方法使用的临界区对象。

CRITICAL_SECTION m_sec;

CComCriticalSection::Term

调用 Win32 函数 DeleteCriticalSection,该函数释放 m_sec 数据成员中包含的临界区对象使用的所有资源。

HRESULT Term() throw();

返回值

返回 S_OK。

注解

调用 Term 后,临界区不能再用于同步。

CComCriticalSection::Unlock

调用 Win32 函数 LeaveCriticalSection,该函数释放 m_sec 数据成员中包含的临界区对象的所有权。

HRESULT Unlock() throw();

返回值

返回 S_OK。

备注

若要首先获取所有权,线程必须调用 Lock 方法。 每次调用 Lock 都需要相应的调用 Unlock 才能释放临界区的所有权。

另请参阅

CComFakeCriticalSection 类
类概述
CComCritSecLock 类