我试图用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创建队列A和队列B,并且进程B只打开队列A和队列B。在一个方向上boost::进程间卡在receive函数上,从不唤醒。
1)是否可以在每个进程中使用两个队列来获得双向消息/信令以与进程间::消息队列一起工作?
2)有没有更好的方法可以在不使用消息队列的情况下获得双向消息?
最佳答案
我没有收到任何评论。解决方案是不使用boost::interprocess::message_queue。在boost/interprocess/shared_memory_对象的帮助下,我自己编写了一个用于单向进程间消息传递的简单新库。https://github.com/svebert/InterprocessMsg