¿Es mejor utilizar colas de mensajes POSIX o sockets de dominio Unix para la comunicación IPC local?¿Cuál es mejor para IPC local, colas de mensajes POSIX (mqueues) o sockets de dominio Unix (locales)?
He trabajado con zócalos Unix entre máquinas (no dominio) y recuerdo que hacer y romper la conexión provocaría que los zócalos se demoraran un poco antes de que finalmente desaparecieran. Además, si quería un intercambio "confiable", tenía que usar TCP o diseñar la aplicación para devolver un ACK. No estoy seguro de si esto también se aplica a los sockets de dominio de Unix.
En mi proyecto actual, necesitamos IPC local. Mi primera reacción fue usar POSIX MQueues, ya que los he usado antes para la mensajería local. Sin embargo, un compañero de trabajo está sugiriendo enchufes de dominio Unix en su lugar.
¿Es uno mejor que el otro, o es una cuestión de familiaridad con la 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 de "finalización", aunque sí quiere saber si su solicitud se ha recibido o no.
La lógica básica para el lado del emisor es:
connect to server
send request
note if the send worked or not
disconnect from server
No puede haber cientos de clientes a un servidor.
Estamos ejecutando un sistema SMP (4-8 núcleos) que ejecuta el sistema operativo Linux.
Gracias de antemano.
Voy a decir ... dbus! – karlphillip