Ich arbeite gerade an einer ziemlich großen single-threaded, ereignisbasierten Anwendung, die unter Linux und vergleichbaren Technologien unter anderen Plattformen um epoll herum entwickelt wurde. Derzeit, wann immer wir möchten, dass zwei Instanzen kommunizieren, tun sie das typischerweise über Sockets, egal ob sie auf demselben Rechner laufen oder nicht. Aus Gründen der Leistung stelle ich mir die Verwendung einer Form von IPC vor, um dieselbe Maschinenkommunikation zu beschleunigen. Jetzt muss ich entscheiden, welcher IPC-Mechanismus verwendet werden soll.Auswahl einer IPC-Lösung für eine ereignisgesteuerte Anwendung
Folgende Faktoren sind wichtig für mich:
- ereignisgesteuert, ohne komplettes Redesign - wenn der IPC-Mechanismus nicht gut mit epoll passt, das ist Monate Arbeit für mich verloren
- schnell - wenn dieser Mechanismus nicht schneller als Steckdosen ist, es lohnt sich nicht die Zeit, die während der Ausführung
- flexibel und (re) konfigurierbare Implementierung - ich glaube, das MPI & al
- erforderlich kein Multi-Threading-Regeln aus.
Ich bin bereit, verschiedene Mechanismen für verschiedene Plattformen zu verwenden, solange sie alle das gleiche Paradigma verwenden. Ich bin auch bereit, so tief wie nötig in C/C++/Obj-C für plattformspezifische Bindungen zu bekommen.
Irgendwelche Vorschläge?
Danke.
By the way, Steckdosen viel bessere Leistung haben, wenn sie auf der gleichen Maschine geöffnet sind: http://stackoverflow.com/questions/1644851/sockets-on-same -machine-for-windows-and-linux/1650906 # 1650906 –
Nun, nach meiner Erfahrung, IP-Sockets nicht. – Yoric