我應該在Unix上編寫一個C應用程序,這樣N
子進程將從父進程中分離出來,我將發送消息給這些子進程,並且子進程應該相互發送消息。從POSIX Message Queue接收特定消息
但問題是,我需要發送消息到特定的目標子進程。即父母將發送給孩子1,孩子1將發送給孩子2,...和孩子n
將發送到1
(循環)。
問題是,如果我只創建一個消息隊列,任何n
孩子都可能會將消息出隊(因爲它們中的任何一個都可能會在父進程之後由於內核調度程序而運行),因此消息將以錯誤的進程出隊!
在我的應用程序中,會有最大值。 1隊列中的一條消息。我唯一想到的解決方案是創建不同的消息隊列並將消息傳遞到適當的隊列,以便特定的目標進程可以接收它。但我認爲我必須有一個更合理的解決方案。
任何想法?
Contraints:進程之間的管道是不允許的,我知道mq在這裏效率很低。我也會執行它們,都是必需的。 P.S.這是有點功課(該死,我的http://canyoudomyhomework.com的創造者),但是這不只是一門功課,一個具有挑戰性的問題,恕我直言。)
我也不確定'mq_notify'是解決方案。 – 2011-03-07 20:55:25
你覺得使用多個消息隊列是非法的嗎? – pilcrow 2011-03-07 22:08:09
如果他們需要'N = 100'或更多呢?似乎效率低下,但它是目前唯一的解決方案。 – 2011-03-08 17:24:07