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