Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
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
IAtlAutoThreadModule
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.