J'ai développé mon premier composant COM (oui, un débutant dans le domaine du développement COM), l'initialisation se fait avec COINIT_MULTITHREADED
. En outre, ce composant COM est un exécutable de serveur local. Mais, je n'ai ajouté aucun code de synchronisation à ce composant. Que pensez-vous: dois-je ajouter CRITICAL_SECTION
s au code ou l'architecture MS COM le gère pour moi? Merci d'avance.[C++] Mon serveur COM nécessite-t-il une synchronisation?
Répondre
Étant donné que vous avez spécifié COINIT_MULTITHREADED, COM autorise plusieurs appels simultanés vers votre serveur et vous devez donc effectuer la synchronisation vous-même.
Utilisez COINIT_APPARTMENTHREADED si vous souhaitez que COM sérialise les appels. Pour plus de détails, voir MSDN.
Oui. Utilisez votre propre mécanisme d'exclusion mutuelle si vous savez que les données seront accessibles à partir de plusieurs directions (threads), ne supposez pas l'architecture MS COM pour le gérer. C'est du moins ce que j'aurais fait, en me basant sur d'autres technologies que Microsoft a faites avec lesquelles j'ai de l'expérience - c'est comme «on fait la base, on fait le reste». Au moins avec l'API native. Enveloppez l'objet section critique dans une classe sympa et donnez un coup de pied avec!
- 1. Pourquoi mon client COM et mon serveur C# "hello world" lancent-ils une exception de cast?
- 2. C# serveur COM - Test de
- 3. Synchronisation des threads COM avec .NET
- 4. Création d'un serveur COM Automation en C#
- 5. Synchronisation d'événements basés sur un objet com
- 6. C# synchronisation
- 7. salpingite du serveur COM
- 8. COM Exceptions en C#
- 9. Instructions de synchronisation C++
- 10. Créer un serveur COM Surrogate (exe) en C#
- 11. Comment utiliser dll COM dans mon programme C++
- 12. C# Accès au serveur COM à partir de JScript
- 13. Comment consommer un serveur local COM + à partir de C#?
- 14. Com Erreur sur le serveur
- 15. synchronisation des données avec le serveur
- 16. Ajout d'un objet serveur COM in-proc à une application C#
- 17. Problèmes de synchronisation dans mon application VB.NET
- 18. événement COM manutention en C++
- 19. Bibliothèque d'interopérabilité C# COM
- 20. Serveur COM Vista et hors processus
- 21. COM Architecture multithread sur une machine multicœur
- 22. cadre Sync pour la synchronisation du serveur
- 23. C# liaison tardive au serveur com/activeX, problème avec une méthode
- 24. C# Classe COM - DISP_E_UNKNOWNNAME
- 25. Problème COM 800A01AD uniquement sur le serveur
- 26. Impossible de créer une instance d'un composant COM côté serveur
- 27. Utilisation de l'interface COM C++ en C# pour le client et le serveur
- 28. ATL COM Server - objet COM cretaing défini dans ATL Server à partir de ce serveur
- 29. Synchronisation de l'application de réservation C#/asp.net
- 30. Configuration du serveur COM + avec ConfigurationSection personnalisée
Existe-t-il des modèles de thread pour les serveurs externes? – sharptooth
@sharptooth: Non, COM est garanti ne pas être thread-safe. –