6
是否有任何方式使得在使用mq_send()
使用mq_send()
將消息發送到消息隊列之後編寫者進程可以使用mq_receive()
來讀取消息。我希望1寫入mq
和1讀mq
,消息丟失。在linux中使用posix消息隊列的單個發送者和多個接收者進程
所以我只想知道我的理解是否錯誤。有沒有辦法讓單個作者和多個讀者進程可以使用posix消息隊列進行通信。
是否有任何方式使得在使用mq_send()
使用mq_send()
將消息發送到消息隊列之後編寫者進程可以使用mq_receive()
來讀取消息。我希望1寫入mq
和1讀mq
,消息丟失。在linux中使用posix消息隊列的單個發送者和多個接收者進程
所以我只想知道我的理解是否錯誤。有沒有辦法讓單個作者和多個讀者進程可以使用posix消息隊列進行通信。
是的,你的理解是正確的。 POSIX消息隊列無法可靠地執行此操作。如果您想要將相同的消息可靠地傳遞給不同的線程/進程,則應爲每個閱讀器使用不同的隊列。
如果切換到SYSV消息隊列,則可以執行此操作。 Msgsnd()和msgrcv()可以在一些商定的協議中操作消息的消息類型字段。例如,編寫器進程將使消息的消息類型成爲讀取器進程的PID;讀者進程將請求只讀取該消息類型的消息。請注意,這仍然需要作者爲每個閱讀器進程編寫消息。