【问题标题】:Single sender and multiple receiver processes using posix message queue in linux在linux中使用posix消息队列的单个发送者和多个接收者进程
【发布时间】:2012-04-13 09:49:25
【问题描述】:

有没有什么方法可以使写入进程在使用mq_send() 向消息队列发送消息后,多个读取进程可以使用mq_receive() 读取消息。我预计 1 次写入 mq 和 1 次读取 mq,消息丢失。

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

【问题讨论】:

    标签: linux posix sysv


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-02-07
      • 2012-07-14
      • 2017-09-26
      • 1970-01-01
      • 2017-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-28
      相关资源
      最近更新 更多