Что лучше для локальных IPC, очередей сообщений POSIX (mqueues) или доменных (локальных) сокетов Unix?

Лучше использовать очереди сообщений POSIX или доменные сокеты Unix для локальной связи IPC?

Я работал с Unix-сокетами между машинами (не доменами), и я помню, что создание и разрыв соединения приводили к тому, что сокеты задерживались некоторое время, прежде чем они наконец исчезли. Более того, если вы хотели «надежного» обмена, вам нужно было использовать TCP или разработать приложение для возврата ACK. Я не уверен, если это также относится к сокетам домена Unix, хотя.

В моем текущем проекте нам нужен локальный IPC. Моей первой реакцией было использование POSIX MQueues, так как я использовал их раньше для локальных сообщений. Однако сотрудник предлагает вместо этого использовать доменные сокеты Unix.

Одно лучше другого или дело в программировании? Или, возможно, это зависит от создаваемого приложения?

В целом, приложение, над которым мы работаем, следует модели клиент / сервер. Клиенты отправляют сообщения на сервер, чтобы «сделать что-то». Тем не менее, клиент не ждет ответа «все готово» - хотя он хочет знать, был ли получен запрос или нет.

Основная логика для отправляющей стороны:

connect to server
send request
note if the send worked or not
disconnect from server

На одном сервере могут быть сотни клиентов.

Мы работаем в системе SMP (4-8 ядер) под управлением ОС Linux.

Заранее спасибо.

Ответы на вопрос(3)

Ваш ответ на вопрос