Лучше ли использовать очереди сообщений 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.
Заранее спасибо.