【问题标题】:Linux Message Queues - Multiple receiversLinux 消息队列 - 多个接收者
【发布时间】:2013-02-07 13:30:25
【问题描述】:

我最近一直在研究和玩弄 linux 消息队列,遇到了一些我不太明白为什么会发生的事情!

如果我们有两个程序都在运行,它们都在无限 for 循环中使用 msgrcv() 来检查消息,然后发送两条消息,那么第一个运行的程序将接收第一条消息,而第二个程序将接收第二条消息?如果您继续发送消息,则它会在每个接收者之间交替。

显然,我知道,一旦一个程序读取了消息,它就会从队列中删除,但是如果它们都在无限检查,谁/如何决定谁将接收消息?

任何帮助将不胜感激!

【问题讨论】:

    标签: linux unix ipc message-queue


    【解决方案1】:

    简短的回答是内核决定。

    长答案是由the do_msgrcv() call within the Linux kernel 处理。如果没有可用的消息,则调用者将被放入队列中,直到有消息可用。不能保证像您描述的那样来回切换,因为这完全取决于每个 msgrcv() 调用的时间,但在您的情况下,它可能几乎一直都是这样。

    【讨论】:

      猜你喜欢
      • 2012-04-13
      • 1970-01-01
      • 2012-07-14
      • 2020-03-17
      • 1970-01-01
      • 2016-03-29
      • 1970-01-01
      • 1970-01-01
      • 2012-01-19
      相关资源
      最近更新 更多