Что лучше для локального 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.

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

22
задан John Rocha 22 September 2010 в 23:22
поделиться