Ich kann Ihnen vorschlagen, die plibsys C-Bibliothek zu verwenden. Es ist sehr einfach, leicht und plattformübergreifend. Veröffentlicht unter der LGPL. Es bietet:
- benannte systemweite gemeinsam genutzte Speicherbereiche (System V-, POSIX- und Windows-Implementierungen);
- benannte systemweite Semaphore für die Zugriffssynchronisation (System V-, POSIX- und Windows-Implementierungen);
- benannte systemweite Implementierung eines gemeinsam genutzten Puffers basierend auf dem gemeinsam genutzten Speicher und dem Semaphor;
- Sockets (TCP, UDP, SCTP) mit IPv4- und IPv6-Unterstützung (UNIX- und Windows-Implementierungen).
Es ist einfach, eine Bibliothek mit einer recht guten Dokumentation zu verwenden. Da es in C geschrieben ist, können Sie problemlos Bindungen aus Skriptsprachen erstellen.
Wenn Sie große Datenmengen zwischen Prozessen übergeben müssen (insbesondere wenn Geschwindigkeit wichtig ist), ist es besser, gemeinsam genutzten Speicher zu verwenden, um die Daten selbst und Sockets zu übergeben, um einen Prozess zu benachrichtigen, dass die Daten bereit sind. Sie können es wie folgt machen:
- Ein Prozess legt die Daten in einem gemeinsam genutzten Speichersegment ab und sendet eine Benachrichtigung über einen Socket an einen anderen Prozess. Da eine Benachrichtigung normalerweise sehr klein ist, ist der Zeitaufwand minimal.
- Ein anderer Prozess empfängt die Benachrichtigung und liest die Daten aus dem gemeinsam genutzten Speichersegment. Danach sendet es eine Benachrichtigung, dass die Daten zum ersten Prozess zurückgelesen wurden, damit mehr Daten eingespeist werden können.
Dieser Ansatz kann plattformübergreifend implementiert werden.