CComGlobalsThreadModel
使用しているスレッド モデルに関係なく、適切なスレッド モデル メソッドを呼び出します。
#if defined( _ATL_SINGLE_THREADED )
typedef CComSingleThreadModel CComGlobalsThreadModel;
#elif defined( _ATL_APARTMENT_THREADED )
typedef CComMultiThreadModel CComGlobalsThreadModel;
#elif defined( _ATL_FREE_THREADED )
typedef CComMultiThreadModel CComGlobalsThreadModel;
#else
#pragma message ("No global threading model defined")
#endif
解説
アプリケーションで使用するスレッド化モデルに応じて、typedef 名 CComGlobalsThreadModel は CComSingleThreadModel または CComMultiThreadModel のどちらかを参照します。 これらのクラスは、追加の typedef 名を提供して、クリティカル セクション クラスを参照できるようにします。
注意
CComGlobalsThreadModel は、CComMultiThreadModelNoCS クラスを参照しません。
CComGlobalsThreadModel を使用すると、特定のスレッド化モデル クラスを指定しなくても済みます。 使用中のスレッド化モデルに関係なく、適切なメソッドが呼び出されます。
CComGlobalsThreadModel のほかに、ATL は typedef 名 CComObjectThreadModel も提供します。 各 typedef が参照するクラスは、使用するスレッド化モデルによって異なります。次の表はその状況を示します。
typedef |
シングルスレッド |
アパートメント スレッド |
フリー スレッド |
---|---|---|---|
CComObjectThreadModel |
S |
S |
M |
CComGlobalsThreadModel |
S |
M |
M |
S=CComSingleThreadModel; M=CComMultiThreadModel
単一のオブジェクト クラス内では、CComObjectThreadModel を使用します。 プログラムでグローバルに使用できるオブジェクトの場合、または複数のスレッド間でモジュールのリソースを保護する場合は、CComGlobalsThreadModel を使用します。
必要条件
**ヘッダー:**atlbase.h