CComAutoThreadModule, classe
À partir d’ATL 7.0, CComAutoThreadModule
est obsolète : consultez les classes de module ATL pour plus d’informations.
Important
Cette classe et ses membres ne peuvent pas être utilisés dans les applications qui s’exécutent dans Windows Runtime.
Syntaxe
template <class ThreadAllocator = CComSimpleThreadAllocator>
class CComAutoThreadModule : public CComModule
Paramètres
ThreadAllocator
[in] Classe gérant la sélection de threads. La valeur par défaut est CComSimpleThreadAllocator.
Membres
Méthodes
Fonction | Description |
---|---|
CreateInstance | Sélectionne un thread, puis crée un objet dans l’appartement associé. |
GetDefaultThreads | (Statique) Calcule dynamiquement le nombre de threads pour le module en fonction du nombre de processeurs. |
Init | Crée les threads du module. |
Verrouiller | Incrémente le nombre de verrous sur le module et sur le thread actuel. |
Déverrouiller | Décrémente le nombre de verrous sur le module et sur le thread actuel. |
Données membres
Membre de données | Description |
---|---|
dwThreadID | Contient l’identificateur du thread actuel. |
m_Allocator | Gère la sélection de threads. |
m_nThreads | Contient le nombre de threads dans le module. |
m_pApartments | Gère les appartements du module. |
Notes
Remarque
Cette classe est obsolète, ayant été remplacée par les classes dérivées CAtlAutoThreadModule et CAtlModule . Les informations suivantes sont utilisées avec les versions antérieures d’ATL.
CComAutoThreadModule
dérive de CComModule pour implémenter un serveur COM de modèle d’appartement et de thread mis en pool pour les services EXEs et Windows. CComAutoThreadModule
utilise CComApartment pour gérer un appartement pour chaque thread du module.
Dérivez votre module à partir du CComAutoThreadModule
moment où vous souhaitez créer des objets dans plusieurs appartements. Vous devez également inclure la macro DECLARE_CLASSFACTORY_AUTO_THREAD dans la définition de classe de votre objet pour spécifier CComClassFactoryAutoThread comme fabrique de classes.
Par défaut, l’AppWizard COM ATL (l’Assistant Projet ATL dans Visual Studio .NET) dérive votre module de CComModule
. Pour utiliser CComAutoThreadModule
, modifiez la définition de classe. Par exemple :
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;
};
Hiérarchie d'héritage
IAtlAutoThreadModule
CComAutoThreadModule
Spécifications
En-tête : atlbase.h
CComAutoThreadModule ::CreateInstance
À partir d’ATL 7.0, CComAutoThreadModule
est obsolète : consultez les classes de module ATL pour plus d’informations.
HRESULT CreateInstance(
void* pfnCreateInstance,
REFIID riid,
void** ppvObj);
Paramètres
pfnCreateInstance
[in] Pointeur vers une fonction de créateur.
riid
[in] IID de l’interface demandée.
ppvObj
[out] Pointeur vers le pointeur d’interface identifié par riid. Si l’objet ne prend pas en charge cette interface, ppvObj a la valeur NULL.
Valeur de retour
Valeur HRESULT standard.
Notes
Sélectionne un thread, puis crée un objet dans l’appartement associé.
CComAutoThreadModule ::d wThreadID
À partir d’ATL 7.0, CComAutoThreadModule
est obsolète : consultez les classes de module ATL pour plus d’informations.
DWORD dwThreadID;
Notes
Contient l’identificateur du thread actuel.
CComAutoThreadModule ::GetDefaultThreads
À partir d’ATL 7.0, CComAutoThreadModule
est obsolète : consultez les classes de module ATL pour plus d’informations.
static int GetDefaultThreads();
Valeur de retour
Nombre de threads à créer dans le module EXE.
Notes
Cette fonction statique calcule dynamiquement le nombre maximal de threads pour le module EXE, en fonction du nombre de processeurs. Par défaut, cette valeur de retour est passée à la méthode Init pour créer les threads.
CComAutoThreadModule ::Init
À partir d’ATL 7.0, CComAutoThreadModule
est obsolète : consultez les classes de module ATL pour plus d’informations.
HRESULT Init(
_ATL_OBJMAP_ENTRY* p,
HINSTANCE h,
const GUID* plibid = NULL,
int nThreads = GetDefaultThreads());
Paramètres
p
[in] Pointeur vers un tableau d’entrées de mappage d’objets.
h
[in] L’HINSTANCE est passée à DLLMain
ou WinMain
.
plibid
[in] Pointeur vers le LIBID de la bibliothèque de types associée au projet.
nThreads
[in] Nombre de threads à créer. Par défaut, nThreads est la valeur retournée par GetDefaultThreads.
Notes
Initialise les membres de données et crée le nombre de threads spécifiés par nThreads.
CComAutoThreadModule ::Lock
À partir d’ATL 7.0, CComAutoThreadModule
est obsolète : consultez les classes de module ATL pour plus d’informations.
LONG Lock();
Valeur de retour
Valeur qui peut être utile pour les diagnostics ou les tests.
Notes
Effectue un incrément atomique sur le nombre de verrous pour le module et pour le thread actuel. CComAutoThreadModule
utilise le nombre de verrous de module pour déterminer si les clients accèdent au module. Le nombre de verrous sur le thread actuel est utilisé à des fins statistiques.
CComAutoThreadModule ::m_Allocator
À partir d’ATL 7.0, CComAutoThreadModule
est obsolète : consultez les classes de module ATL pour plus d’informations.
ThreadAllocator m_Allocator;
Notes
Objet gérant la sélection de threads. Par défaut, le paramètre de ThreadAllocator
modèle de classe est CComSimpleThreadAllocator.
CComAutoThreadModule ::m_nThreads
À partir d’ATL 7.0, CComAutoThreadModule
est obsolète : consultez les classes de module ATL pour plus d’informations.
int m_nThreads;
Notes
Contient le nombre de threads dans le module EXE. Quand Init est appelé, m_nThreads
est défini sur la valeur du paramètre nThreads . L’appartement associé de chaque thread est géré par un objet CComApartment .
CComAutoThreadModule ::m_pApartments
À partir d’ATL 7.0, CComAutoThreadModule
est obsolète : consultez les classes de module ATL pour plus d’informations.
CComApartment* m_pApartments;
Notes
Pointe vers un tableau d’objets CComApartment , chacun d’entre eux gère un appartement dans le module. Le nombre d’éléments du tableau est basé sur le membre m_nThreads .
CComAutoThreadModule ::Unlock
À partir d’ATL 7.0, CComAutoThreadModule
est obsolète : consultez les classes de module ATL pour plus d’informations.
LONG Unlock();
Valeur de retour
Valeur qui peut être utile pour les diagnostics ou les tests.
Notes
Effectue une décrémentation atomique sur le nombre de verrous pour le module et pour le thread actuel. CComAutoThreadModule
utilise le nombre de verrous de module pour déterminer si les clients accèdent au module. Le nombre de verrous sur le thread actuel est utilisé à des fins statistiques.
Lorsque le nombre de verrous de module atteint zéro, le module peut être déchargé.