次の方法で共有


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 の旧リリースで使用するためのものです。

CComAutoThreadModuleCComModule から派生し、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;
};

継承階層

_ATL_MODULE

CAtlModule

IAtlAutoThreadModule

CAtlModuleT

CAtlAutoThreadModuleT

CComModule

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] 作成されるスレッドの数。 既定で、nThreadsGetDefaultThreads により返される値です。

解説

データ メンバーを初期化し、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_nThreadsnThreads パラメーター値に設定されます。 各スレッドの関連付けられているアパートメントは、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 になると、モジュールをアンロードできます。

関連項目

クラスの概要
モジュール クラス