单个发送者和多个接收者进程在linux中使用posix消息队列

有没有什么办法可以让写程序在使用mq_send()向消息队列发送消息之后进行处理,多个读取器进程可以使用mq_receive()读取消息。 我期望1写mq和1从mq读取,消息丢失。

所以我只想知道我的理解是否错误。 有没有办法让单个作者和多个读者进程可以使用posix消息队列进行通信。

是的,你的理解是正确的。 POSIX消息队列无法可靠地执行此操作。 如果您想要将相同的消息可靠地传递给不同的线程/进程,则应为每个阅读器使用不同的队列。

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