我正在尝试通过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的情况下进行双向消息传递?
答案 0 :(得分:0)
我没有对此发表任何评论。解决方案是不使用boost :: interprocess :: message_queue。借助于boost / interprocess / shared_memory_object,我确实自己编写了一个新的简单库,用于单向进程间消息传递。 https://github.com/svebert/InterprocessMsg