【发布时间】:2011-07-10 13:47:56
【问题描述】:
我应该在 Unix 中编写一个 C 应用程序,这样N 子进程将从父进程中派生出来,我将向这些子进程发送消息,并且子进程应该相互发送消息。
但是问题是,我需要将消息发送到特定的目标子进程。即父母将发送给孩子 1,孩子 1 将发送给孩子 2,......并且孩子 n 将发送给 1(循环)。
问题是,如果我只创建一个消息队列,n 中的任何一个子级都可能使消息出列(因为它们中的任何一个都可能由于内核调度程序而在父进程之后运行),因此消息将在错误的进程中出列!
在我的应用程序中,将有最大值。队列中一次有 1 条消息。我想到的唯一解决方案是创建n 不同的消息队列并将消息传递到适当的队列,以便特定的目标进程可以接收它。但我认为我必须有一个更合法的解决方案。
有什么想法吗?
Contraints:不允许进程之间的管道,我知道mq在这里效率低下。我也会实现它们,两者都是必需的。 P.S. 这是一个家庭作业(该死的我是 http://canyoudomyhomework.com 的创建者),但这不仅仅是一个作业,一个具有挑战性的问题恕我直言。)
【问题讨论】:
-
我也不确定
mq_notify是否是解决方案。 -
您认为使用多个消息队列有什么不合理之处?
-
如果他们需要
N=100或更多怎么办?似乎效率低下,但这是目前唯一的解决方案。
标签: unix posix message-queue mq