Question

Je veux partager des données avec de multiples processus. Ma première tentative est d'utiliser point à point de file d'attente un message avec plusieurs lecteurs puisque je l'ai lu que le P2P Msg File d'attente est très rapide.

Lors de mon test, il semble que plusieurs lecteurs lisent de la même file d'attente et une fois qu'un message est récupéré par un lecteur, d'autres lecteurs ne seront pas en mesure d'aller chercher le même message.

Quelle est la meilleure IPC pour le partage des données à plusieurs processus? Les données sont mises à jour régulièrement (plusieurs fois par seconde), donc je pense que WM_COPYDATA est pas un bon choix et va interférer avec la file d'attente de message « normal ».

Ma deuxième tentative sera probablement une mémoire partagée + mutex + événements

Était-ce utile?

La solution

files d'attente point à point fonctionnera bien. Oui, lorsque vous envoyez, un seul récepteur le message mais l'expéditeur peut interroger la file d'attente (en appelant GetMsgQueueInfo ) pour voir combien d'auditeurs (wNumReaders membre du MSGQUEUEINFO ) il y a et simplement répéter le message que nombre de fois.

Autres conseils

  

Enfin, il est parfaitement valable pour plus d'un fil ou d'un processus pour ouvrir la même file d'attente pour un accès en lecture ou en écriture. les files d'attente de messages point à point prennent en charge les lecteurs multiples et plusieurs écrivains. Cette pratique permet, par exemple, un processus d'écriture pour envoyer des messages à plusieurs processus client ou plusieurs processus d'écriture pour envoyer des messages à un seul processus de lecteur. Il y a, cependant, aucun moyen d'adresser un message à un processus de lecteur spécifique. Lorsqu'un processus ou un fil, lit la file d'attente, il va lire le message suivant disponible. Il n'y a également aucun moyen de diffuser un message à plusieurs lecteurs.

     

Programmation Windows Embedded CE 6.0 Developer référence, quatrième édition, Douglas Bouillant, page 304

En dépit de l'avertissement, l'Ide ctacke semble être très bien pour mes cas d'utilisation.

Caveat: Mes lecteurs de file d'attente doivent Sleep(10) après chercher leur part du message à permettre à d'autres lecteurs d'aller extraire les messages. Sans Sleep(), un seul processus de lecture est signalé par l'attente.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top