CComSingleThreadModel 类
此类提供递增和递减变量值的方法。
语法
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。