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 CComModule
vom 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
IAtlAutoThreadModule
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.