Freigeben über


CComAutoThreadModule-Klasse

Ab ATL 7.0 CComAutoThreadModule ist veraltet: Weitere Details finden Sie unter ATL-Modulklassen .

Wichtig

Diese Klasse und ihre Member können nicht in Anwendungen verwendet werden, die in der Windows-Runtime ausgeführt werden.

Syntax

template <class ThreadAllocator = CComSimpleThreadAllocator>
class CComAutoThreadModule : public CComModule

Parameter

ThreadAllocator
[in] Die Klasse, die die Threadauswahl verwaltet. Der Standardwert ist CComSimpleThreadAllocator.

Member

Methoden

Funktion Beschreibung
CreateInstance Wählt einen Thread aus und erstellt dann ein Objekt in der zugeordneten Wohnung.
GetDefaultThreads (Statisch) Berechnet dynamisch die Anzahl der Threads für das Modul basierend auf der Anzahl der Prozessoren.
Init Erstellt die Threads des Moduls.
Sperren Erhöht die Sperranzahl für das Modul und den aktuellen Thread.
Entsperren Erhöht die Sperranzahl für das Modul und den aktuellen Thread.

Datenelemente

Datenmememm Beschreibung
dwThreadID Enthält den Bezeichner des aktuellen Threads.
m_Allocator Verwaltet die Threadauswahl.
m_nThreads Enthält die Anzahl der Threads im Modul.
m_pApartments Verwaltet die Wohnungen des Moduls.

Hinweise

Hinweis

Diese Klasse ist veraltet und wurde durch die abgeleiteten Klassen CAtlAutoThreadModule und CAtlModule ersetzt. Die folgenden Informationen dienen zur Verwendung mit älteren Versionen von ATL.

CComAutoThreadModule wird von CComModule abgeleitet, um einen Threadpool-COM-Server für EXEs und Windows-Dienste zu implementieren. CComAutoThreadModule verwendet CComApartment , um eine Wohnung für jeden Thread im Modul zu verwalten.

Leiten Sie Ihr Modul ab CComAutoThreadModule , wenn Sie Objekte in mehreren Wohnungen erstellen möchten. Sie müssen auch das DECLARE_CLASSFACTORY_AUTO_THREAD Makro in die Klassendefinition Ihres Objekts einschließen, um CComClassFactoryAutoThread als Klassenfactory anzugeben.

Standardmäßig wird ihr Modul CComModulevom ATL COM AppWizard (der ATL-Projekt-Assistent in Visual Studio .NET) abgeleitet. Um die Klasse zu verwenden CComAutoThreadModule, ändern Sie die Klassendefinition. Zum Beispiel:

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;
};

Vererbungshierarchie

_ATL_MODULE

CAtlModule

IAtlAutoThreadModule

CAtlModuleT

CAtlAutoThreadModuleT

CComModule

CComAutoThreadModule

Anforderungen

Kopfzeile: atlbase.h

CComAutoThreadModule::CreateInstance

Ab ATL 7.0 CComAutoThreadModule ist veraltet: Weitere Details finden Sie unter ATL-Modulklassen .

HRESULT CreateInstance(
    void* pfnCreateInstance,
    REFIID riid,
    void** ppvObj);

Parameter

pfnCreateInstance
[in] Ein Zeiger auf eine Erstellerfunktion.

riid
[in] Die IID der angeforderten -Schnittstelle.

ppvObj
[out] Ein Zeiger auf den Schnittstellenzeiger, der von riid identifiziert wird. Wenn das Objekt diese Schnittstelle nicht unterstützt, wird ppvObj auf NULL festgelegt.

Rückgabewert

Ein HRESULT-Standardwert.

Hinweise

Wählt einen Thread aus und erstellt dann ein Objekt in der zugeordneten Wohnung.

CComAutoThreadModule::d wThreadID

Ab ATL 7.0 CComAutoThreadModule ist veraltet: Weitere Details finden Sie unter ATL-Modulklassen .

DWORD dwThreadID;

Hinweise

Enthält den Bezeichner des aktuellen Threads.

CComAutoThreadModule::GetDefaultThreads

Ab ATL 7.0 CComAutoThreadModule ist veraltet: Weitere Details finden Sie unter ATL-Modulklassen .

static int GetDefaultThreads();

Rückgabewert

Die Anzahl der Threads, die im EXE-Modul erstellt werden sollen.

Hinweise

Diese statische Funktion berechnet dynamisch die maximale Anzahl von Threads für das EXE-Modul basierend auf der Anzahl der Prozessoren. Standardmäßig wird dieser Rückgabewert an die Init-Methode übergeben, um die Threads zu erstellen.

CComAutoThreadModule::Init

Ab ATL 7.0 CComAutoThreadModule ist veraltet: Weitere Details finden Sie unter ATL-Modulklassen .

HRESULT Init(
    _ATL_OBJMAP_ENTRY* p,
    HINSTANCE h,
    const GUID* plibid = NULL,
    int nThreads = GetDefaultThreads());

Parameter

p
[in] Ein Zeiger auf ein Array von Objektzuordnungseinträgen.

h
[in] Der HINSTANCE-Pass an DLLMain oder WinMain.

plibid
[in] Ein Zeiger auf die LIBID der Typbibliothek, die dem Projekt zugeordnet ist.

nThreads
[in] Die Anzahl der zu erstellenden Threads. Standardmäßig ist nThreads der von GetDefaultThreads zurückgegebene Wert.

Hinweise

Initialisiert Datenmmber und erstellt die Anzahl der durch nThreads angegebenen Threads.

CComAutoThreadModule::Lock

Ab ATL 7.0 CComAutoThreadModule ist veraltet: Weitere Details finden Sie unter ATL-Modulklassen .

LONG Lock();

Rückgabewert

Ein Wert, der für Diagnosen oder Tests nützlich sein kann.

Hinweise

Führt einen atomischen Inkrement für die Sperranzahl für das Modul und für den aktuellen Thread aus. CComAutoThreadModule verwendet die Anzahl der Modulsperren, um zu bestimmen, ob Clients auf das Modul zugreifen. Die Sperranzahl für den aktuellen Thread wird für statistische Zwecke verwendet.

CComAutoThreadModule::m_Allocator

Ab ATL 7.0 CComAutoThreadModule ist veraltet: Weitere Details finden Sie unter ATL-Modulklassen .

ThreadAllocator  m_Allocator;

Hinweise

Das Objekt, das die Threadauswahl verwaltet. Der Klassenvorlagenparameter ist standardmäßig ThreadAllocator CComSimpleThreadAllocator.

CComAutoThreadModule::m_nThreads

Ab ATL 7.0 CComAutoThreadModule ist veraltet: Weitere Details finden Sie unter ATL-Modulklassen .

int m_nThreads;

Hinweise

Enthält die Anzahl der Threads im EXE-Modul. Wenn Init aufgerufen wird, m_nThreads wird der Wert des nThreads-Parameters festgelegt. Die zugeordnete Wohnung jedes Threads wird von einem CComApartment-Objekt verwaltet.

CComAutoThreadModule::m_pApartments

Ab ATL 7.0 CComAutoThreadModule ist veraltet: Weitere Details finden Sie unter ATL-Modulklassen .

CComApartment* m_pApartments;

Hinweise

Verweist auf ein Array von CComApartment-Objekten , von denen jedes eine Wohnung im Modul verwaltet. Die Anzahl der Elemente im Array basiert auf dem m_nThreads-Element .

CComAutoThreadModule::Unlock

Ab ATL 7.0 CComAutoThreadModule ist veraltet: Weitere Details finden Sie unter ATL-Modulklassen .

LONG Unlock();

Rückgabewert

Ein Wert, der für Diagnosen oder Tests nützlich sein kann.

Hinweise

Führt eine atome Dekrementierung für die Sperranzahl für das Modul und für den aktuellen Thread aus. CComAutoThreadModule verwendet die Anzahl der Modulsperren, um zu bestimmen, ob Clients auf das Modul zugreifen. Die Sperranzahl für den aktuellen Thread wird für statistische Zwecke verwendet.

Wenn die Anzahl der Modulsperren null erreicht, kann das Modul entladen werden.

Siehe auch

Klassenübersicht
Modulklassen