Что лучше для локальных 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.
Заранее спасибо.