Tout le monde semble dire que les named pipes sont plus rapides que les sockets IPC. Dans quelle mesure sont-ils plus rapides ? Je préférerais utiliser les sockets parce qu'ils peuvent faire de la communication bidirectionnelle et sont très flexibles, mais je choisirai la vitesse plutôt que la flexibilité si c'est par un montant considérable.
Peut-être qu'un jour, dans un lointain futur utopique, nous aurons un noyau complètement nouveau, modulaire et moderne qui offrira implicitement toutes les capacités (interprocessus et autres) pour lesquelles nous marchons actuellement sur du verre brisé... mais bon... on peut rêver.
10 votes
Votre kilométrage varie :) Profilez l'utilisation typique pour votre application prévue, et choisissez le meilleur des deux. Ensuite, profilez les tuyaux anonymes, les sockets d'autres domaines et familles, les sémaphores et la mémoire partagée ou les files de messages (SysV et POSIX), les signaux en temps réel avec un mot de données, ou autre.
pipe(2)
(er,mkfifo(3)
?) pourrait être le gagnant, mais vous ne le saurez pas avant d'avoir essayé.2 votes
Les files de messages SysV FTW ! Je ne sais pas si elles sont rapides, j'ai juste un faible pour elles.
5 votes
Qu'est-ce que la "vitesse" dans ce cas ? Le taux de transfert global des données ? Ou la latence (la vitesse à laquelle le premier octet arrive au récepteur) ? Si vous voulez un transfert de données local rapide, il est difficile de battre la mémoire partagée. En revanche, si la latence est un problème, la question devient plus intéressante...