2010-06-28 10 views
0

Comment COM garantit-il que sur une machine multicœur, elle reste en synchronisation si vous avez un serveur COM externe et un client COM, s'appuyant les uns sur les autres, les choses ne se brisent pas si vous l'utilisez sur une architecture multi-core?COM Architecture multithread sur une machine multicœur

+0

Quels problèmes attendez-vous spécifiquement? – sharptooth

+0

Si le processeur A exécute Thread A du client COM et que la CPU B exécute Thread A du serveur COM, s'ils dépendent l'un de l'autre et que le serveur COM a mis à jour la valeur de ce client, le client utilisera des données incorrectes . –

Répondre

2

Dans votre commentaire, vous demandez ce qui se passe si le client COM s'exécute sur un thread et le serveur COM - sur un autre thread. Ces deux threads résident dans des processus différents (puisque le serveur est hors-proc).

Si votre client utilise un serveur COM externe, le sous-système COM utilise RPC (RPC local) pour communiquer avec le serveur. Ceci est fait de manière transparente pour le client - le client appelle une méthode, RPC prépare une chaîne avec tous les paramètres, bloque le thread client, passe l'appel au serveur, le serveur traite l'appel abd revient au client. Il n'y a pas d'accès simultané, donc pas de problèmes avec une synchronisation supplémentaire - toute la synchronisation est faite automatiquement.

0

Comme votre serveur COM est en panne, les threads du client et du serveur s'exécutent dans des processus distincts. Les mécanismes de synchronisation inter-processus dans Windows fonctionnent à travers les cœurs ou les processeurs, de sorte que le sous-système COM traitera déjà tous les problèmes multi-core/processeur pour vous. Si vous avez des données qui peuvent changer à la fin du serveur sans que le client le sache, c'est aussi un problème pour un seul CPU/core - vous devez adresser cela soit avec interrogation (mauvaise) ou interface de notification client (mieux).

Questions connexes