Oba mają te same podstawowe narzędzia - semafory, pamięć współdzieloną i kolejki wiadomości. Oferują nieco inny interfejs niż te narzędzia, ale podstawowe pojęcia są takie same. Jedną zauważalną różnicą jest to, że POSIX oferuje pewne funkcje powiadamiania dla kolejek wiadomości, których Sys V. (Zobacz mq_notify()
.)
Sys V IPC istnieje już od dłuższego czasu, co ma kilka praktycznych konsekwencji -
Po pierwsze, POSIX IPC jest mniej rozpowszechniony. Napisałem opakowanie Pythona dla POSIX IPC, a jego dokumentacja zawiera listę tego, co wiem o implementacjach POSIX IPC na różnych platformach .
Na wszystkich platformach wymienionych w tej dokumentacji, Sys V IPC jest całkowicie zaimplementowany AFAIK, podczas gdy możesz zobaczyć, że POSIX IPC nie.
Drugą konsekwencją ich względnego wieku jest to, że POSIX IPC został zaprojektowany po tym, jak Sys V IPC był używany przez jakiś czas. Dlatego projektanci POSIX API mogli uczyć się na mocnych i słabych stronach API Sys V. W rezultacie POSIX API jest prostsze i łatwiejsze w użyciu IMO i polecam go zamiast API Sys V.
Powinienem zauważyć, że nigdy nie przeprowadzałem żadnych testów wydajności, aby porównać te dwa. Myślę, że starszy interfejs API (Sys V) miałby więcej czasu na dostrojenie wydajności, ale to tylko spekulacje, które oczywiście nie zastąpią testów w świecie rzeczywistym.
Co do tego, dlaczego istnieją dwa standardy - POSIX stworzył ich standard, ponieważ uważali, że jest to ulepszenie standardu Sys V. Ale gdyby wszyscy zgodzili się, że POSIX IPC jest lepszy, wiele, wiele programów nadal używa Sys V IPC i przeniesienie ich wszystkich do POSIX IPC zajęłoby lata. W praktyce nie byłoby to warte wysiłku, więc nawet gdyby od jutra cały nowy kod korzystał z POSIX IPC, Sys V IPC pozostałby przez wiele lat.
Nie możemy Ci powiedzieć, którego powinieneś użyć, nie wiedząc o wiele więcej o tym, co zamierzasz zrobić, ale odpowiedzi, które tutaj masz, powinny dostarczyć Ci wystarczających informacji, aby zdecydować samodzielnie.