Utilisation de différents mécanismes IPC

Je suis un programmeur c ++.

Je voulais connaître un scénario en temps réel dans lequel nous pourrions utiliser différents mécanismes IPC tels que PIPE / Named, Shared Memory.

Je sais à peu près où je peux utiliser socket et queue de messages. Mais pour PIPE / Named PIPE et la mémoire partagée, je n’en ai aucune idée.

Ceci est juste pour comprendre les différents mécanismes IPC et leur utilisation.

Merci,

J’avais besoin d’utiliser un tube nommé pour communiquer avec ma Erlang Vitual Machine qui fonctionnait en tant que démon.

Je crois qu’ils sont progressivement remplacés par des “socketpairs” car ils offrent une communication bidirectionnelle contrairement aux tubes qui ne sont qu’unidirectionnels à moins de créer deux tubes différents.

La mémoire partagée est toujours utilisée dans les applications serveur de grande taille car ce sera le plus rapide de tous les autres mécanismes sur un système multiprocesseur, mais il est généralement difficile à mettre en œuvre correctement.

Et l’utilisation de sockets devient nécessaire uniquement lorsque la communication sur un réseau est requirejse.

Encore une fois, il s’agit d’une chose ” Utilisez le mécanisme qui vous convient le mieux pour l’application

Dans notre entreprise, certains logiciels utilisent la mémoire partagée. Il l’utilise pour diffuser des données d’un processus vers d’autres processus. Les sockets peuvent être utilisés pour cela, mais comme il s’agit d’un à plusieurs, un socket séparé doit être créé pour chaque processus consommateur, ce qui n’est pas vraiment optimal. Les ordinateurs modernes utilisant un fichier partagé feraient probablement l’affaire, mais ce logiciel a été développé au milieu des années 90, alors que les disques étaient très lents, et ce logiciel avait des exigences de latence assez ssortingctes. Il utilise une sorte de tampon circulaire dans lequel le processus de production écrit ses données. Les sémaphores sont utilisés pour la synchronisation afin que les autres processus ne voient pas les données partiellement mises à jour.

Dans la plupart des logiciels modernes, les threads sont généralement utilisés à la place de plusieurs processus utilisant la mémoire partagée.

En ce qui concerne les tubes, leur utilisation la plus courante est les tubes shell:

ps ax | grep java 

Je crois que les pipes nommées sont en grande partie remplacées par des sockets. Même s’ils ont encore leurs utilisations, je n’en connais aucun.

Vous voudrez peut-être aussi lire le chapitre correspondant de la programmation Art of Unix d’Eric Steven Raymond. Cela donne une très bonne vue d’ensemble des méthodes Unix IPC et de leurs utilisations.