CComObjectThreadModel
更新 : 2007 年 11 月
使用しているスレッド モデルに関係なく、適切なスレッド モデル メソッドを呼び出します。
#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 を使用します。
必要条件
ヘッダー : atlbase.h