首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >消息队列-多个进程在msgqueue上发送命令

消息队列-多个进程在msgqueue上发送命令
EN

Stack Overflow用户
提问于 2014-04-07 19:21:36
回答 2查看 3.6K关注 0票数 1

我有一个场景,多个进程(p1、p2等)同时向一个消息队列(Cmd_msg_q)发送一个命令(post)。

并且存在一个接收器进程(R1),其从队列中检索msg并将适当的应答发送回另一msg队列( response_msg_q )上的进程。

如何从接收方进程进行回复,以便将消息发送到该特定进程?

(使用Posix消息队列。)在这里,进程A、B或C是动态创建的。最大限制是20个进程,可以发送命令。

EN

回答 2

Stack Overflow用户

发布于 2014-04-07 19:31:41

在这种情况下,您必须在消息中集成发送者的一些ID。还要注意,这些队列本质上是单向的,因此要发回消息,您需要创建一个队列,初始接收者将在该队列上发送消息,初始发送者将侦听回复。

这比我最初认为的更难解释,所以让我们试着用and示例。假设我们有程序A、B和C,其中A和B发送到C。它们通过相同的队列发送。C将知道谁发送了消息,因为发送者的标识嵌入在消息中,并将回复发送到B读取的队列或C读取的队列。

票数 2
EN

Stack Overflow用户

发布于 2014-04-07 22:51:44

POSIX消息队列几乎需要为每个进程建立第二个队列,为此有一个很好的建立模式。

  • 您的cmd_msg_q应该是一个已建立的众所周知的队列(即路径名)。系统可以在任何应用程序被启动之前创建队列(例如,启动脚本),或者接收进程可以在任何发送者进程被关闭( launched.
  • Establish )消息类型的协议之前创建它,最小限度地:(1)打开输出队列;(2)处理消息;(3)关闭输出队列。每条消息都需要包含哪个发送方进程正在提交事务的指示,例如pid或某些独特的identifier.
  • The发送方进程创建自己的队列(例如输入到它们并输出到接收“命令”进程。它们向接收方发送“打开队列”消息,以及它们刚刚创建的队列的路径名。命令过程向接收器开放输出队列,并且确认通信是established.
  • "process“消息类型被交换。命令进程从组合的源队列读取输入,并根据每个message.
  • Client (接收方)队列中的标识符对适当的输出队列进行回复,在完成时发送一个“关闭队列”消息类型。命令处理发送ack并关闭该接收器队列。客户端处理ack并关闭它的队列。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22910954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档