Ответ 1
Оба имеют одинаковые базовые инструменты - семафоры, разделяемую память и очереди сообщений. Они предлагают немного другой интерфейс для этих инструментов, но основные понятия одинаковы. Одно из отличительных отличий заключается в том, что 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 смогли узнать о сильных и слабых сторонах API Sys V. В результате POSIX API проще и проще использовать IMO, и я рекомендую его по API Sys V.
Я должен отметить, что я никогда не тестировал тесты производительности, чтобы сравнить их. Я думаю, что у старого API (Sys V) было бы больше времени чтобы быть настроенными на производительность, но это просто предположение, которое, конечно же, не подменяет реальное тестирование.
Что касается двух стандартов - POSIX создал свой стандарт, потому что считал, что это улучшение в стандарте Sys V. Но если все согласились с тем, что POSIX IPC лучше, многие многие программы по-прежнему используют Sys V IPC, и для переноса их всех в POSIX IPC потребуются годы. На практике это было бы нецелесообразно, поэтому, даже если бы весь новый код использовал POSIX IPC с завтрашнего дня, Sys V IPC будет придерживаться в течение многих лет.
Мы не можем сказать вам, что вы должны использовать, не зная намного больше о том, что вы намереваетесь делать, но ответы, которые вы здесь должны дать вам достаточно информации, чтобы сами решить.