CComAutoThreadModule クラス
ATL 7.0 以降、CComAutoThreadModule
は古くなりました。詳細については、「ATL モジュール クラス」を参照してください。
重要
このクラスとそのメンバーは、Windows ランタイムで実行するアプリケーションで使用することはできません。
構文
template <class ThreadAllocator = CComSimpleThreadAllocator>
class CComAutoThreadModule : public CComModule
パラメーター
ThreadAllocator
[in] スレッドの選択を管理するクラス。 既定値は、CComSimpleThreadAllocator です。
メンバー
メソッド
関数 | 説明 |
---|---|
CreateInstance | スレッドを選択し、関連付けられているアパートメント内にオブジェクトを作成します。 |
GetDefaultThreads | (静的) プロセッサの数に基づいて、モジュールのスレッド数を動的に計算します。 |
Init | モジュールのスレッドを作成します。 |
ロック | モジュールと現在のスレッドのロック カウントをインクリメントします。 |
Unlock | モジュールと現在のスレッドのロック カウントをデクリメントします。 |
データ メンバー
データ メンバー | 説明 |
---|---|
dwThreadID | 現在のスレッドの識別子を格納します。 |
m_Allocator | スレッドの選択を管理します。 |
m_nThreads | モジュール内のスレッドの数を格納します。 |
m_pApartments | モジュールのアパートメントを管理します。 |
解説
Note
このクラスは廃止されており、CAtlAutoThreadModule および CAtlModule 派生クラスに置き換えられています。 この後の情報は、ATL の旧リリースで使用するためのものです。
CComAutoThreadModule
は CComModule から派生し、EXE および Windows サービス用のスレッドプールされたアパートメントモデルの COM サーバーを実装します。 CComAutoThreadModule
は、CComApartment を使用し、モジュール内の各スレッドのアパートメントを管理します。
複数のアパートメントにオブジェクトを作成する場合は、CComAutoThreadModule
からモジュールを派生させます。 また、CComClassFactoryAutoThread をクラス ファクトリとして指定するには、DECLARE_CLASSFACTORY_AUTO_THREAD マクロをオブジェクトのクラス定義に含める必要があります。
既定では、ATL COM AppWizard (Visual Studio .NET の ATL プロジェクト ウィザード) は CComModule
からモジュールを派生させます。 CComAutoThreadModule
を使用するには、クラス定義を変更します。 次に例を示します。
class CMyModule :
public CComAutoThreadModule<CComSimpleThreadAllocator>
{
public:
LONG Unlock()
{
LONG l = CComAutoThreadModule<CComSimpleThreadAllocator>::Unlock();
if (l == 0)
PostThreadMessage(dwThreadID, WM_QUIT, 0, 0);
return l;
}
DWORD dwThreadID;
};
継承階層
IAtlAutoThreadModule
CComAutoThreadModule
要件
ヘッダー: atlbase.h
CComAutoThreadModule::CreateInstance
ATL 7.0 以降、CComAutoThreadModule
は古くなりました。詳細については、「ATL モジュール クラス」を参照してください。
HRESULT CreateInstance(
void* pfnCreateInstance,
REFIID riid,
void** ppvObj);
パラメーター
pfnCreateInstance
[in] creator 関数へのポインター。
riid
[入力] 要求された インターフェイスの IID。
ppvObj
[出力] riid によって識別されるインターフェイス ポインターへのポインター。 オブジェクトがこのインターフェイスをサポートしていない場合、ppvObj は NULL に設定されます。
戻り値
標準の HRESULT 値。
解説
スレッドを選択し、関連付けられているアパートメント内にオブジェクトを作成します。
CComAutoThreadModule::dwThreadID
ATL 7.0 以降、CComAutoThreadModule
は古くなりました。詳細については、「ATL モジュール クラス」を参照してください。
DWORD dwThreadID;
解説
現在のスレッドの識別子を格納します。
CComAutoThreadModule::GetDefaultThreads
ATL 7.0 以降、CComAutoThreadModule
は古くなりました。詳細については、「ATL モジュール クラス」を参照してください。
static int GetDefaultThreads();
戻り値
EXE モジュールで作成されるスレッドの数。
解説
この静的関数は、プロセッサの数に基づいて、EXE モジュールのスレッドの最大数を動的に計算します。 既定では、この戻り値は、スレッドを作成するために Init メソッドに渡されます。
CComAutoThreadModule::Init
ATL 7.0 以降、CComAutoThreadModule
は古くなりました。詳細については、「ATL モジュール クラス」を参照してください。
HRESULT Init(
_ATL_OBJMAP_ENTRY* p,
HINSTANCE h,
const GUID* plibid = NULL,
int nThreads = GetDefaultThreads());
パラメーター
P
[入力] オブジェクト マップ エントリの配列へのポインター。
時
[入力] DLLMain
または WinMain
に渡される HINSTANCE。
plibid
[入力] プロジェクトに関連付けられたタイプ ライブラリの LIBID へのポインター。
nThreads
[in] 作成されるスレッドの数。 既定で、nThreads は GetDefaultThreads により返される値です。
解説
データ メンバーを初期化し、nThreads によって指定されたスレッド数を作成します。
CComAutoThreadModule::Lock
ATL 7.0 以降、CComAutoThreadModule
は古くなりました。詳細については、「ATL モジュール クラス」を参照してください。
LONG Lock();
戻り値
診断またはテストに役立つ可能性がある値。
解説
モジュールと現在のスレッドのロック カウントに対してアトミック インクリメントを実行します。 CComAutoThreadModule
では、モジュールのロック カウントを使用して、クライアントがモジュールにアクセスしているかどうかを判断します。 現在のスレッドのロック カウントは、統計の目的で使用されます。
CComAutoThreadModule::m_Allocator
ATL 7.0 以降、CComAutoThreadModule
は古くなりました。詳細については、「ATL モジュール クラス」を参照してください。
ThreadAllocator m_Allocator;
解説
スレッドの選択を管理するオブジェクト。 既定では、ThreadAllocator
クラス テンプレート パラメーターは CComSimpleThreadAllocator です。
CComAutoThreadModule::m_nThreads
ATL 7.0 以降、CComAutoThreadModule
は古くなりました。詳細については、「ATL モジュール クラス」を参照してください。
int m_nThreads;
解説
EXE モジュール内のスレッドの数を格納します。 Init が呼び出されると、m_nThreads
は nThreads パラメーター値に設定されます。 各スレッドの関連付けられているアパートメントは、CComApartment オブジェクトによって管理されます。
CComAutoThreadModule::m_pApartments
ATL 7.0 以降、CComAutoThreadModule
は古くなりました。詳細については、「ATL モジュール クラス」を参照してください。
CComApartment* m_pApartments;
解説
CComApartment オブジェクトの配列をポイントし、それぞれがモジュールのアパートメントを管理します。 配列内の要素の数は、m_nThreads メンバーに基づいています。
CComAutoThreadModule::Unlock
ATL 7.0 以降、CComAutoThreadModule
は古くなりました。詳細については、「ATL モジュール クラス」を参照してください。
LONG Unlock();
戻り値
診断またはテストに役立つ可能性がある値。
解説
モジュールと現在のスレッドのロック カウントに対してアトミック デクリメントを実行します。 CComAutoThreadModule
では、モジュールのロック カウントを使用して、クライアントがモジュールにアクセスしているかどうかを判断します。 現在のスレッドのロック カウントは、統計の目的で使用されます。
モジュールのロック カウントが 0 になると、モジュールをアンロードできます。