¿Qué es mejor para IPC local, colas de mensajes POSIX (mqueues) o sockets de dominio Unix (local)?

¿Es mejor usar las colas de mensajes POSIX o los sockets de dominio Unix para la comunicación IPC local?

He trabajado con sockets Unix entre máquinas (no dominio) y recuerdo que hacer y romper la conexión causaría que los sockets se demoren un tiempo antes de que finalmente desaparezcan. Además, si deseaba un intercambio "confiable", tenía que usar TCP o diseñar la aplicación para devolver un ACK. Sin embargo, no estoy seguro de si esto también se aplica a los sockets de dominio Unix.

En mi proyecto actual necesitamos IPC local. Mi primera reacción fue usar POSIX MQueues, ya que los he usado antes para mensajes locales. Sin embargo, un compañero de trabajo sugiere enchufes de dominio Unix en su lugar.

¿Es uno mejor que el otro, o es una cuestión de familiaridad de programación? ¿O tal vez depende de la aplicación que se está creando?

En general, la aplicación en la que estamos trabajando sigue un modelo cliente / servidor. Los clientes envían mensajes al servidor para "hacer algo". Sin embargo, el cliente no espera una respuesta "hecho", aunque sí quiere saber si su solicitud ha sido recibida o no.

La lógica básica para el lado de envío es:

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

Puede haber cientos de clientes en un servidor.

Estamos ejecutando en un sistema SMP (4-8 núcleos) que ejecuta el sistema operativo Linux.

Gracias por adelantado.

Respuestas a la pregunta(3)

Su respuesta a la pregunta