2010-09-23 33 views
0

veulent juste confirmer avec le COM/experts ... là-bas DCOMDelphi COM EXE et Threading

J'ai un Delphi COM EXE qui exécute sur un serveur (filetage est Appartement simple) et une autre copie de cette même EXE démarre sur le même serveur (un serveur qui a 2 processeurs avec dual core pour que le gestionnaire de tâches affiche 4 graphes séparés) vont-ils se relayer les uns les autres ou vont-ils tourner sur des cœurs séparés?

J'ai trouvé un poste quelque part que ledit

« Si deux clients ont besoin d'utiliser le même objet, ils ont à tour de rôle. Avec ce modèle de thread les données d'instance est sûre, les données globales doivent être protégées à l'aide des sections critiques ou bien d'autres formes de sérialisation, bien sûr, les variables locales du thread sont fiables sur plusieurs appels. "

Répondre

4

Vous avez manqué la partie « différents objets du même serveur » from the same paragraph. Puisque vous avez "Single Instancing" vous obtenez un serveur séparé pour chaque instance d'objet COM, donc les appels à ces instances peuvent être traités en parallèle et COM ne devra pas fournir d'exclusion mutuelle.

Pensez-y de cette façon. Les modèles Threading sont là pour fournir une sécurité de thread - un accès synchronisé aux données partagées entre les threads du même processus. Vous avez un objet par processus, donc il n'y a pas deux threads qui essaieront d'accéder au même objet à moins bien sûr que vous essayiez de passer un pointeur à un objet dans un autre appel de méthode d'objet.