使用message_queue进行双向消息传递的boost.interprocess问题

时间:2019-01-08 20:31:40

标签: linux windows c++11 boost message-queue

我正在尝试通过boost.interprocess和message_queue在两个进程之间实现一个消息传递系统。

第一个问题:一个队列只能用于将消息从进程A发送到B,而不是从B发送到A。

因此,我在两个进程中都使用两个队列。进程A在队列A处侦听/接收,并在队列B上发送;进程B在队列B处侦听/接收,并在队列A上发送。

我无法同时使用两个队列。取决于调用boost::interprocess::message_queue(boost::interprocess::open_or_create,...)的进程的顺序 或

boost::interprocess::message_queue(boost::interprocess::open_only,...)

一个队列不能工作,另一个队列不能工作。

即使进程A创建了Queue-A和Queue-B,而进程B也仅打开了Queue-A和Queue-B。在一个方向上,boost :: interprocess停留在接收功能上,永不苏醒。

1)是否可以在每个进程中使用两个队列来使双向消息传递/信令与interprocess :: message_queue一起使用? 2)是否有一种更好的方式可以在不使用message_queue的情况下进行双向消息传递?

1 个答案:

答案 0 :(得分:0)

我没有对此发表任何评论。解决方案是不使用boost :: interprocess :: message_queue。借助于boost / interprocess / shared_memory_object,我确实自己编写了一个新的简单库,用于单向进程间消息传递。 https://github.com/svebert/InterprocessMsg