CComSingleThreadModel 类

此类提供递增和递减变量值的方法。

语法

class CComSingleThreadModel

成员

公共 Typedef

名称 描述
CComSingleThreadModel::AutoCriticalSection 引用类 CComFakeCriticalSection
CComSingleThreadModel::CriticalSection 引用类 CComFakeCriticalSection
CComSingleThreadModel::ThreadModelNoCS 引用 CComSingleThreadModel

公共方法

名称 描述
CComSingleThreadModel::Decrement 递减指定变量的值。 此实现不是线程安全的。
CComSingleThreadModel::Increment 递增指定变量的值。 此实现不是线程安全的。

注解

CComSingleThreadModel 提供递增和递减变量值的方法。 与 CComMultiThreadModelCComMultiThreadModelNoCS 不同,这些方法不是线程安全的。

通常,可以通过两个 typedef 名称之一(CComObjectThreadModelCComGlobalsThreadModel)使用 CComSingleThreadModel。 每个 typedef 引用的类取决于使用的线程模型,如下表所示:

typedef 单线程模型 单元线程模型 免费线程处理模型
CComObjectThreadModel S S M
CComGlobalsThreadModel S M M

S= CComSingleThreadModel;M= CComMultiThreadModel

CComSingleThreadModel 本身定义 3 个 typedef 名称。 ThreadModelNoCS 引用 CComSingleThreadModelAutoCriticalSectionCriticalSection 引用类 CComFakeCriticalSection,它提供与获取和释放临界区所有权相关的空方法。

要求

标头:atlbase.h

CComSingleThreadModel::AutoCriticalSection

使用 CComSingleThreadModel 时,typedef 名称 AutoCriticalSection 引用类 CComFakeCriticalSection

typedef CComFakeCriticalSection AutoCriticalSection;

注解

由于 CComFakeCriticalSection 不提供临界区,因此其方法不执行任何操作。

CComMultiThreadModelCComMultiThreadModelNoCS 包含 AutoCriticalSection 的定义。 下表显示了线程模型类与 AutoCriticalSection 引用的临界区类之间的关系:

类的定义位置 引用的类
CComSingleThreadModel CComFakeCriticalSection
CComMultiThreadModel CComAutoCriticalSection
CComMultiThreadModelNoCS CComFakeCriticalSection

除了 AutoCriticalSection 之外,你还可以使用 typedef 名称 CriticalSection。 如果要消除 CRT 启动代码,则不应在全局对象或静态类成员中指定 AutoCriticalSection

示例

请参阅 CComMultiThreadModel::AutoCriticalSection

CComSingleThreadModel::CriticalSection

使用 CComSingleThreadModel 时,typedef 名称 CriticalSection 引用类 CComFakeCriticalSection

typedef CComFakeCriticalSection CriticalSection;

注解

由于 CComFakeCriticalSection 不提供临界区,因此其方法不执行任何操作。

CComMultiThreadModelCComMultiThreadModelNoCS 包含 CriticalSection 的定义。 下表显示了线程模型类与 CriticalSection 引用的临界区类之间的关系:

类的定义位置 引用的类
CComSingleThreadModel CComFakeCriticalSection
CComMultiThreadModel CComCriticalSection
CComMultiThreadModelNoCS CComFakeCriticalSection

除了 CriticalSection 之外,还可以使用 typedef 名称 AutoCriticalSection。 如果要消除 CRT 启动代码,则不应在全局对象或静态类成员中指定 AutoCriticalSection

示例

请参阅 CComMultiThreadModel::AutoCriticalSection

CComSingleThreadModel::Decrement

此静态函数递减 p 指向的变量的值。

static ULONG WINAPI Decrement(LPLONG p) throw();

参数

p
[in] 指向要递减的变量的指针。

返回值

递减的结果。

CComSingleThreadModel::Increment

此静态函数递增由 p 指向的变量的值。

static ULONG WINAPI Increment(LPLONG p) throw();

参数

p
[in] 指向要递增的变量的指针。

返回值

增量的结果。

CComSingleThreadModel::ThreadModelNoCS

使用 CComSingleThreadModel 时,typedef 名称 ThreadModelNoCS 只是引用 CComSingleThreadModel

typedef CComSingleThreadModel ThreadModelNoCS;

备注

CComMultiThreadModelCComMultiThreadModelNoCS 包含 ThreadModelNoCS 的定义。 下表显示了线程模型类与 ThreadModelNoCS 引用的类之间的关系:

类的定义位置 引用的类
CComSingleThreadModel CComSingleThreadModel
CComMultiThreadModel CComMultiThreadModelNoCS
CComMultiThreadModelNoCS CComMultiThreadModelNoCS

示例

请参阅 CComMultiThreadModel::AutoCriticalSection

另请参阅

类概述