ATL et le marshaleur libre de threads
La page des attributs de l'assistant objet simple ATL fournit une option qui permet à votre classe pour agréger le marshaleur libre de threads (FTM).
l'assistant génère le code pour créer une instance du marshaleur libre de threads dans FinalConstruct et pour libérer cette instance dans FinalRelease.Une macro d' COM_INTERFACE_ENTRY_AGGREGATE est ajoutée automatiquement au mappage COM pour garantir que les demandes d' QueryInterface pour IMarshal sont traitées par le marshaleur libre de threads.
Le marshaleur libre de threads permet l'accès direct aux interfaces sur votre objet de tout thread dans le même de processus, accélérant des appels d'intercloisonnement.Cette option est destinée aux classes qui utilisent les deux modèle de thread.
En utilisant cette option, les classes doivent être responsable de la sécurité des threads de leurs données.En outre, les objets qui regroupent le marshaleur libre de threads et la nécessité d'utiliser des pointeurs d'interface obtenus à partir de autres objets doit prendre des mesures supplémentaires pour garantir que les interfaces sont correctement marshalées.Cela implique généralement stocker des pointeurs d'interface dans le tableau global interface (GIT) et obtenir le pointeur de la table GIT chaque fois qu'il est utilisé.ATL fournit la classe CComGITPtr pour vous aider à des pointeurs d'interface d'utilisation stockés dans la table GIT.
Voir aussi
Référence
When to Use the Global Interface Table
In-Process Server Threading Issues