Share via


CComAutoThreadModule-klasse

Opmerking

De ATL (Active Template Library) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.

Vanaf ATL 7.0 CComAutoThreadModule is verouderd: zie ATL-moduleklassen voor meer informatie.

Belangrijk

Deze klasse en de bijbehorende leden kunnen niet worden gebruikt in toepassingen die worden uitgevoerd in Windows Runtime.

Syntaxis

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

Parameterwaarden

ThreadAllocator
[in] De klasse die threadselectie beheert. De standaardwaarde is CComSimpleThreadAllocator.

Leden

Methods

Functie Description
CreateInstance Selecteert een draad en maakt vervolgens een object in het bijbehorende appartement.
GetDefaultThreads (Statisch) Berekent dynamisch het aantal threads voor de module op basis van het aantal processors.
Init Hiermee maakt u de threads van de module.
Vergrendeling Hiermee wordt het aantal vergrendelingen voor de module en de huidige thread verhoogd.
Ontgrendelen Hiermee wordt het aantal vergrendelingen voor de module en op de huidige thread afgerekend.

Gegevensleden

Gegevenslid Description
dwThreadID Bevat de id van de huidige thread.
m_Allocator Hiermee beheert u de threadselectie.
m_nThreads Bevat het aantal threads in de module.
m_pApartments Beheert de appartementen van de module.

Opmerkingen

Opmerking

Deze klasse is verouderd en is vervangen door de afgeleide klassen CAtlAutoThreadModule en CAtlModule . De volgende informatie is bedoeld voor gebruik met oudere versies van ATL.

CComAutoThreadModule is afgeleid van CComModule voor het implementeren van een com-server met threadpools, een appartementsmodel voor EXE's en Windows-services. CComAutoThreadModule maakt gebruik van CComApartment voor het beheren van een appartement voor elke thread in de module.

Uw module afleiden van CComAutoThreadModule wanneer u objecten in meerdere appartementen wilt maken. U moet ook de macro DECLARE_CLASSFACTORY_AUTO_THREAD opnemen in de klassedefinitie van uw object om CComClassFactoryAutoThread op te geven als klassefactory.

Standaard wordt de ATL COM AppWizard (de wizard ATL-project in Visual Studio .NET) afgeleid van CComModuleuw module. Als u deze wilt gebruiken CComAutoThreadModule, wijzigt u de klassedefinitie. Voorbeeld:

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

Overnamehiërarchie

_ATL_MODULE

CAtlModule

IAtlAutoThreadModule

CAtlModuleT

CAtlAutoThreadModuleT

CComModule

CComAutoThreadModule

Requirements

Header: atlbase.h

CComAutoThreadModule::CreateInstance

Vanaf ATL 7.0 CComAutoThreadModule is verouderd: zie ATL-moduleklassen voor meer informatie.

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

Parameterwaarden

pfnCreateInstance
[in] Een aanwijzer naar een makerfunctie.

riid
[in] De IID van de aangevraagde interface.

ppvObj
[uit] Een aanwijzer naar de interfacepointer die wordt geïdentificeerd door riid. Als het object deze interface niet ondersteunt, is ppvObj ingesteld op NULL.

Retourwaarde

Een standaard HRESULT-waarde.

Opmerkingen

Selecteert een draad en maakt vervolgens een object in het bijbehorende appartement.

CComAutoThreadModule::d wThreadID

Vanaf ATL 7.0 CComAutoThreadModule is verouderd: zie ATL-moduleklassen voor meer informatie.

DWORD dwThreadID;

Opmerkingen

Bevat de id van de huidige thread.

CComAutoThreadModule::GetDefaultThreads

Vanaf ATL 7.0 CComAutoThreadModule is verouderd: zie ATL-moduleklassen voor meer informatie.

static int GetDefaultThreads();

Retourwaarde

Het aantal threads dat moet worden gemaakt in de EXE-module.

Opmerkingen

Met deze statische functie wordt het maximum aantal threads voor de EXE-module dynamisch berekend op basis van het aantal processors. Deze retourwaarde wordt standaard doorgegeven aan de Init-methode om de threads te maken.

CComAutoThreadModule::Init

Vanaf ATL 7.0 CComAutoThreadModule is verouderd: zie ATL-moduleklassen voor meer informatie.

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

Parameterwaarden

p
[in] Een aanwijzer naar een matrix met objecttoewijzingvermeldingen.

h
[in] De HINSTANCE is doorgegeven aan DLLMain of WinMain.

plibid
[in] Een aanwijzer naar de LIBID van de typebibliotheek die aan het project is gekoppeld.

nThreads
[in] Het aantal threads dat moet worden gemaakt. Standaard is nThreads de waarde die wordt geretourneerd door GetDefaultThreads.

Opmerkingen

Initialiseert gegevensleden en maakt het aantal threads dat is opgegeven door nThreads.

CComAutoThreadModule::Lock

Vanaf ATL 7.0 CComAutoThreadModule is verouderd: zie ATL-moduleklassen voor meer informatie.

LONG Lock();

Retourwaarde

Een waarde die nuttig kan zijn voor diagnostische gegevens of tests.

Opmerkingen

Voert een atomische verhoging uit op het aantal vergrendelingen voor de module en voor de huidige thread. CComAutoThreadModule gebruikt het aantal modulevergrendelingen om te bepalen of clients toegang hebben tot de module. Het aantal vergrendelingen op de huidige thread wordt gebruikt voor statistische doeleinden.

CComAutoThreadModule::m_Allocator

Vanaf ATL 7.0 CComAutoThreadModule is verouderd: zie ATL-moduleklassen voor meer informatie.

ThreadAllocator  m_Allocator;

Opmerkingen

Het object dat threadselectie beheert. De klassesjabloonparameter is standaard ThreadAllocatorCComSimpleThreadAllocator.

CComAutoThreadModule::m_nThreads

Vanaf ATL 7.0 CComAutoThreadModule is verouderd: zie ATL-moduleklassen voor meer informatie.

int m_nThreads;

Opmerkingen

Bevat het aantal threads in de EXE-module. Wanneer Init wordt aangeroepen, m_nThreads wordt deze ingesteld op de parameterwaarde nThreads . Het bijbehorende appartement van elke thread wordt beheerd door een CComApartment-object .

CComAutoThreadModule::m_pApartments

Vanaf ATL 7.0 CComAutoThreadModule is verouderd: zie ATL-moduleklassen voor meer informatie.

CComApartment* m_pApartments;

Opmerkingen

Verwijst naar een matrix van CComApartment-objecten , die elk een appartement in de module beheren. Het aantal elementen in de matrix is gebaseerd op het m_nThreads lid.

CComAutoThreadModule::Unlock

Vanaf ATL 7.0 CComAutoThreadModule is verouderd: zie ATL-moduleklassen voor meer informatie.

LONG Unlock();

Retourwaarde

Een waarde die nuttig kan zijn voor diagnostische gegevens of tests.

Opmerkingen

Voert een atomische degradatie uit op het aantal vergrendelingen voor de module en voor de huidige thread. CComAutoThreadModule gebruikt het aantal modulevergrendelingen om te bepalen of clients toegang hebben tot de module. Het aantal vergrendelingen op de huidige thread wordt gebruikt voor statistische doeleinden.

Wanneer het aantal modulevergrendelingen nul bereikt, kan de module worden uitgepakt.

Zie ook

Overzicht van klassen
Moduleklassen