Qual é o melhor para IPC local, filas de mensagens POSIX (mqueues) ou soquetes de domínio Unix (local)?

É melhor usar filas de mensagens POSIX ou soquetes de domínio Unix para comunicação IPC local?

Eu trabalhei com soquetes Unix entre máquinas (não no domínio) e lembro que fazer e interromper a conexão faria com que os soquetes permanecessem um pouco antes que eles finalmente desaparecessem. Além disso, se você queria uma troca "confiável", precisava usar o TCP ou projetar o aplicativo para retornar um ACK. Não tenho certeza se isso também se aplica aos soquetes de domínio Unix.

No meu projeto atual, precisamos do IPC local. Minha primeira reação foi usar o POSIX MQueues, já que eu os usei antes para mensagens locais. No entanto, um colega de trabalho está sugerindo soquetes de domínio Unix.

Um é melhor que o outro, ou é uma questão de familiaridade de programação? Ou talvez isso dependa do aplicativo que está sendo criado?

Em geral, o aplicativo em que trabalhamos segue um modelo de cliente / servidor. Os clientes enviam mensagens ao servidor para "fazer alguma coisa". No entanto, o cliente não espera por uma resposta "pronto" - embora deseje saber se a solicitação foi recebida ou não.

A lógica básica para o lado de envio é:

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

Pode haver centenas de clientes para o servidor único.

Estamos executando em um sistema SMP (4-8 núcleos) executando o sistema operacional Linux.

Desde já, obrigado.

questionAnswers(3)

yourAnswerToTheQuestion