L'utilizzo di una coda di messaggi veri tende a lasciare messaggi di dimensioni fisse. Se si dispone di un numero elevato di messaggi di dimensioni variabili, questo può diventare un problema di prestazioni. L'utilizzo di un socket può essere un modo per aggirare questo problema, anche se a quel punto si finisce di provare a racchiudere questa funzionalità per diventare identica a una coda, il che è difficile da ottenere direttamente nei dettagli, in particolare aspetti come il blocco/non-blocco e l'atomicità.
La memoria condivisa è veloce ma richiede la gestione (si finisce per scrivere una versione di malloc per gestire SHM), inoltre è necessario sincronizzarlo e bloccarlo in qualche modo. Sebbene tu possa usare le librerie per aiutare con questo, la disponibilità dipende dal tuo ambiente e dalla tua lingua.
Le code sono facili ma hanno gli svantaggi elencati come professionisti per la discussione sul socket.
I tubi sono stati coperti da Blagovest risposta a questa domanda.
Come sempre accade con questo genere di cose, suggerirei di leggere i libri di W. Richard Stevens su IPC e prese. Non c'è spiegazione migliore della sua! :-)
potrebbe essere il caso di qualche vantaggio di sblocco dei socket IPC? – jasonkim