8

Is there any way such that a writer process after sending a mesage to message queue using mq_send(), multiple reader processes can read the message using mq_receive(). I expect 1 write to mq and 1 read from mq, the message is lost.

So I just want to know if my understanding is wrong. Is there any way so that a single writer and multiple reader processes can communicate using posix message queues.

4

1 回答 1

9

是的,你的理解是正确的。您不能使用 POSIX 消息队列可靠地做到这一点。如果您想将相同的消息可靠地传递给不同的线程/进程,您应该为每个阅读器使用不同的队列。

如果您切换到 SYSV 消息队列,则可以执行此操作。 Msgsnd()和 msgrcv() 可以在某些约定的协议中操作消息的消息类型字段。例如写进程会将消息的消息类型设为读进程的PID;并且阅读器进程将请求仅阅读该消息类型的消息。请注意,这仍然需要编写器为每个读取器进程编写一条消息。

于 2012-03-29T19:33:07.723 回答