Beide haben dieselben grundlegenden Tools - Semaphoren, gemeinsam genutzten Speicher und Nachrichtenwarteschlangen. Sie bieten eine etwas andere Schnittstelle zu diesen Tools, aber die Grundkonzepte sind dieselben. Ein bemerkenswerter Unterschied besteht darin, dass POSIX einige Benachrichtigungsfunktionen für Nachrichtenwarteschlangen bietet, die Sys V nicht bietet. (Siehe mq_notify()
.)
Sys V IPC gibt es schon länger, was einige praktische Auswirkungen hat -
Erstens ist POSIX IPC weniger weit verbreitet. Ich habe einen Python-Wrapper für POSIX IPC geschrieben und in seiner Dokumentation ist aufgeführt, was ich über POSIX IPC-Implementierungen auf verschiedenen Plattformen weiß .
Auf allen in dieser Dokumentation aufgeführten Plattformen ist Sys V IPC AFAIK vollständig implementiert, während dies bei POSIX IPC nicht der Fall ist.
Die zweite Implikation ihres relativen Alters ist, dass POSIX IPC entwickelt wurde, nachdem Sys V IPC für eine Weile verwendet wurde. Daher konnten die Entwickler der POSIX-API aus den Stärken und Schwächen der Sys V-API lernen. Infolgedessen ist die Verwendung der IMO für die POSIX-API einfacher und einfacher, und ich empfehle sie gegenüber der Sys V-API.
Ich sollte beachten, dass ich nie Leistungstests durchgeführt habe, um die beiden zu vergleichen. Ich würde denken, dass die ältere API (Sys V) mehr Zeit gehabt hätte, um die Leistung zu optimieren, aber das ist nur Spekulation, die natürlich keinen Ersatz für reale Tests darstellt.
Warum gibt es zwei Standards? POSIX hat seinen Standard erstellt, weil sie dachten, dies sei eine Verbesserung des Sys V-Standards. Aber wenn sich alle einig wären, dass POSIX IPC besser ist, verwenden viele, viele Programme immer noch Sys V IPC und es würde Jahre dauern, sie alle auf POSIX IPC zu portieren. In der Praxis würde sich die Mühe nicht lohnen. Selbst wenn ab morgen alle neuen Codes POSIX IPC verwenden würden, würde Sys V IPC viele Jahre bestehen bleiben.
Wir können Ihnen nicht sagen, welche Sie verwenden sollen, ohne viel mehr darüber zu wissen, was Sie vorhaben, aber die Antworten, die Sie hier haben, sollten Ihnen genügend Informationen geben, um selbst zu entscheiden.