【问题标题】:Multiple messages in message queue消息队列中的多条消息
【发布时间】:2016-08-21 00:16:32
【问题描述】:

这可能是一个非常愚蠢的问题,但谷歌搜索没有奏效,所以就这样吧。我正在编写一个程序,使用消息队列将一系列值发送到不同的进程。我进行的研究表明我使用 msgsnd() 将消息存储在队列中,使用 msgrcv() 接收消息。我需要在队列中存储一个开始号和一个结束号。所以我的问题是我可以在这个队列中存储多条消息吗?如果可以,我该如何存储和检索它们? TIA 为您提供所有帮助。

【问题讨论】:

  • Err..call msgsendmsgrecv 每条消息一次。这是一个太明显的答案还是你在问其他更微妙的问题?
  • 不是在名字里吗?这是一条消息队列 - 因此您可以发送多条消息,并且您会按照发送它们的顺序接收它们。
  • 是的,我知道人们会侮辱。谢谢

标签: c multithreading process message-queue


【解决方案1】:

queue 的概念意味着您可以将内容放入 (msgsnd) 中,从而在队列中创建一条消息。要接收一条消息,您必须致电msgrcv。每次接收通常只会返回一条消息,因此如果您发送n 消息,则必须接收n 消息。

队列通常被视为 FIFO(先进先出),因此第一个 msgsnd 创建的消息将是 msgrcv 返回的第一个消息。 如果您通过网络(和/或在集群中)运行消息队列,这会有所削弱。由于网络延迟/故障转移/重试等消息可能会出现故障,因此通常建议构建包含所有必要信息的消息,以便针对这些情况正确处理。

【讨论】:

    猜你喜欢
    • 2015-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 2021-12-23
    • 1970-01-01
    • 2015-12-16
    • 2017-04-17
    相关资源
    最近更新 更多