CComObjectThreadModel
调用适当的线程模型方法,无论使用哪种线程模型。
#if defined( _ATL_SINGLE_THREADED )
typedef CComSingleThreadModel CComObjectThreadModel;
#elif defined( _ATL_APARTMENT_THREADED )
typedef CComSingleThreadModel CComObjectThreadModel;
#elif defined( _ATL_FREE_THREADED )
typedef CComMultiThreadModel CComObjectThreadModel;
#else
#pragma message ("No global threading model defined")
#endif
备注
根据应用程序使用的线程模型,typedef 名称 CComObjectThreadModel 引用 CComSingleThreadModel 或 CComMultiThreadModel。这些选件类提供附加 typedef 名称引用临界区选件类。
说明 |
---|
CComObjectThreadModel 不引用选件类 CComMultiThreadModelNoCS。 |
使用 CComObjectThreadModel 从指定特定线程模型选件类抽象化。无论使用哪种线程模型,相应的方法将调用。
除了 CComObjectThreadModel外,ATL提供 typedef 名称 CComGlobalsThreadModel。每 typedef 引用的选件类依赖于线程模型使用,如下表所示:
typedef |
单个线程 |
单元线程处理 |
自由线程处理 |
---|---|---|---|
CComObjectThreadModel |
S |
S |
M |
CComGlobalsThreadModel |
S |
M |
M |
S=CComSingleThreadModel;M=CComMultiThreadModel
使用在单个对象类中的 CComObjectThreadModel。使用 CComGlobalsThreadModel 在为或全局供程序的对象,或者,如果要保护在多个线程中时的模块资源。
要求
Header: atlbase.h