Оба имеют одинаковые основные инструменты - семафоры, разделяемую память и очереди сообщений. Они предлагают немного другой интерфейс для этих инструментов, но основные концепции те же. Одно заметное отличие состоит в том, что POSIX предлагает некоторые функции уведомлений для очередей сообщений, которых нет в Sys V. (См. mq_notify()
.)
Sys V IPC существует дольше, что имеет несколько практических последствий -
Во-первых, POSIX IPC применяется менее широко. Я написал оболочку Python для POSIX IPC, и в в ее документации перечислено, что я знаю о реализации POSIX IPC на различных платформах .
На всех платформах, перечисленных в этой документации, Sys V IPC полностью реализован AFAIK, в то время как вы можете видеть, что POSIX IPC нет.
Вторым следствием их относительного возраста является то, что POSIX IPC был разработан после того, как Sys V IPC некоторое время использовался. Таким образом, разработчики POSIX API смогли извлечь уроки из сильных и слабых сторон Sys V API. В результате POSIX API становится проще
и легче использовать IMO, и я рекомендую его через Sys V API.
Должен заметить, что я никогда не проводил никаких тестов производительности, чтобы сравнить их. Я думаю, что старый API (Sys V) имел бы больше времени
быть настроенным на производительность, но это всего лишь предположение, которое, конечно, не заменит реальное тестирование.
Относительно того, почему существует два стандарта - POSIX создал их стандарт, потому что они думали, что это улучшение по стандарту Sys V. Но если бы все согласились с тем, что POSIX IPC лучше, многие многие программы по-прежнему используют Sys V IPC, и для их переноса на POSIX IPC потребуются годы. На практике это не стоило бы усилий, поэтому, даже если весь новый код будет использовать POSIX IPC с завтрашнего дня, Sys V IPC останется в течение многих лет.
Мы не можем сказать вам, что вы должны использовать, не зная намного больше о том, что вы собираетесь делать, но ответы, которые у вас есть, должны дать вам достаточно информации, чтобы принять решение самостоятельно.