COM s'occupe de l'enfilage au nom du serveur COM. Le serveur publie le type de thread qu'il prend en charge avec la clé de Registre ThreadingModel. Les paramètres très communs sont Appartement ou Les deux. Gratuit est très rare. Une clé manquante est équivalente à Apartment.
COM nécessite un STA (Single-Threaded Apartment) pour les serveurs cloisonnés d'appartements. Si vous n'en fournissez pas un (appel CoInitialize/Ex), il créera un thread dédié pour le serveur. Une exigence essentielle pour un thread STA est qu'il pompe également une boucle de message Windows. La boucle de message est le mécanisme par lequel COM commute automatiquement un appel de méthode d'un thread à un autre. Donc, la réponse générale à votre question est, oui, il est normalement thread-safe. Il y a encore des choses qui peuvent mal tourner. Un interblocage est possible lorsqu'un appel est effectué à partir d'un thread de travail mais que le thread STA ne fonctionne pas. Ou le serveur pourrait se plaindre du ThreadingModel enregistré. Pas rare avec les serveurs implémentés dans .NET. Ils sont enregistrés comme les deux, mais il existe quelques classes .NET qui sont réellement thread-safe.
Ceci est du C++ natif. –