次の方法で共有


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 名 CComObjectThreadModelCComSingleThreadModel または CComMultiThreadModel のどちらかを参照します。これらのクラスは、追加の typedef 名を提供して、クリティカル セクション クラスを参照できるようにします。

at420k5c.alert_note(ja-jp,VS.90).gifメモ :

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

参照

参照

CComObjectRootEx クラス

その他の技術情報

ATL クラスの概要

ATL typedef