此类提供递增和递减变量值的方法。
语法
class CComSingleThreadModel
成员
公共 Typedef
| 名称 | 描述 |
|---|---|
| CComSingleThreadModel::AutoCriticalSection | 引用类 CComFakeCriticalSection。 |
| CComSingleThreadModel::CriticalSection | 引用类 CComFakeCriticalSection。 |
| CComSingleThreadModel::ThreadModelNoCS | 引用 CComSingleThreadModel。 |
公共方法
| 名称 | 描述 |
|---|---|
| CComSingleThreadModel::Decrement | 递减指定变量的值。 此实现不是线程安全的。 |
| CComSingleThreadModel::Increment | 递增指定变量的值。 此实现不是线程安全的。 |
注解
CComSingleThreadModel 提供递增和递减变量值的方法。 与 CComMultiThreadModel 和 CComMultiThreadModelNoCS 不同,这些方法不是线程安全的。
通常,可以通过两个 typedef 名称之一(CComObjectThreadModel 或 CComGlobalsThreadModel)使用 CComSingleThreadModel。 每个 typedef 引用的类取决于使用的线程模型,如下表所示:
| typedef | 单线程模型 | 单元线程模型 | 免费线程处理模型 |
|---|---|---|---|
CComObjectThreadModel |
S | S | M |
CComGlobalsThreadModel |
S | M | M |
S= CComSingleThreadModel;M= CComMultiThreadModel
CComSingleThreadModel 本身定义 3 个 typedef 名称。 ThreadModelNoCS 引用 CComSingleThreadModel。 AutoCriticalSection 和 CriticalSection 引用类 CComFakeCriticalSection,它提供与获取和释放临界区所有权相关的空方法。
要求
标头:atlbase.h
CComSingleThreadModel::AutoCriticalSection
使用 CComSingleThreadModel 时,typedef 名称 AutoCriticalSection 引用类 CComFakeCriticalSection。
typedef CComFakeCriticalSection AutoCriticalSection;
注解
由于 CComFakeCriticalSection 不提供临界区,因此其方法不执行任何操作。
CComMultiThreadModel 和 CComMultiThreadModelNoCS 包含 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 不提供临界区,因此其方法不执行任何操作。
CComMultiThreadModel 和 CComMultiThreadModelNoCS 包含 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;
备注
CComMultiThreadModel 和 CComMultiThreadModelNoCS 包含 ThreadModelNoCS 的定义。 下表显示了线程模型类与 ThreadModelNoCS 引用的类之间的关系:
| 类的定义位置 | 引用的类 |
|---|---|
CComSingleThreadModel |
CComSingleThreadModel |
CComMultiThreadModel |
CComMultiThreadModelNoCS |
CComMultiThreadModelNoCS |
CComMultiThreadModelNoCS |
示例
请参阅 CComMultiThreadModel::AutoCriticalSection。