2012-03-29 15 views
6

¿Hay alguna manera de que un proceso de escritura después de enviar un mensaje a la cola de mensajes usando mq_send(), múltiples procesos de lectura puedan leer el mensaje usando mq_receive(). Espero 1 escribir en mq y 1 leer en mq, el mensaje se pierde.Procesos de un único remitente y múltiples receptores que usan cola de mensajes posix en Linux

Así que solo quiero saber si mi entendimiento es incorrecto. ¿Hay alguna manera para que un solo escritor y múltiples procesos de lectura se puedan comunicar usando colas de mensajes posix?

Respuesta

7

Sí, su comprensión es correcta. No puede hacer esto de manera confiable con colas de mensajes POSIX. Si desea comunicar el mismo mensaje a diferentes hilos/procesos de manera confiable, debe usar una cola diferente para cada lector.

Puede hacerlo si cambia a las colas de mensajes SYSV. Msgsnd() y msgrcv() pueden manipular el campo de tipo de mensaje de un mensaje en algún protocolo acordado. Por ejemplo, el proceso de escritura hará que el tipo de mensaje del mensaje sea el PID del proceso de lectura; y el proceso del lector solicitará leer solo mensajes de ese tipo de mensaje. Tenga en cuenta que esto aún requiere que el escritor escriba un mensaje para cada proceso de lectura.

Cuestiones relacionadas