lundi 3 juin 2013

Pipe vs message queues

Message queues:

*Taille limité : int msgmax, int msgmnb
*Nombre d'entrée limitée : msgmap
*Il faut indiqué la taille des données a envoyé.
*Possède des timeouts pour l'envoie et la réception.
*Comportement de datagramme : lire une entrée supprime de la file d'attente. Si vous ne lisez pas l'ensemble des données, le reste est perdu. Par exemple : envoyer un message de 20 octets, mais le destinataire lit 10 octets. Les 10 octets restants sont perdus.
*Taille de la mémoire de la file d'attente crée a l'initialisation.

Pipes:
*Aucune limitation de taille.
* Les pipes sont dans une couche supérieur au message queues.
* Utilise les descripteurs de fichier.
* L'envoie et la réception sont bloquantes.
 
 

Unix soket VS Pipe

Unix socket VS pipe


Pipe : 

* un canal unidirectionnel de données pour créer une communication bidirectionnel il faut créer deux pipe. 
* Avec le pipe on peut seulement faire des flux d'octets.
* Simple a utilisé.
*Communication entre deux processus.

* Plus rapide que les sockets entre 12 et 15%. http://www.opendmx.net/index.php/Pipe_vs_Unix_Socket_Performance
* Plus fiable.
 


Unix Sockets :

*un canal  bidirectionnel de données.
*Unix domain sockets offrent flux d'octets et datagramme.
*Plus compliqué a utilisé que les pipes.
*Communication entre plusieurs processus.
*Envoi et reception de descricpteur de fichier entre processus : recvmsg(),recv(), sendmsg(), send(), sendto(), et sendmsg().
* Moins rapide que les pipes. http://www.opendmx.net/index.php/Pipe_vs_Unix_Socket_Performance

*Plus flexible