boost::interprocess::message_queue 在使用 Visual C++ 的发布模式下停止工作
我正在使用 boost::interprocess::message_queue 和 VC++(在 Microsoft Visual Studio 2005 中)。 在调试模式下可以正常工作。 然后,当我在发布模式下编译程序时,它会停止工作,每次我调用“try_send”时,它都会返回 false。 我不明白发布模式和调试模式之间的设置可能有所不同,这会使队列停止工作。
I am using boost::interprocess::message_queue, with VC++ (in Microsoft Visual Studio 2005).
It is working properly in Debug mode.
Then when I compile my program in Release mode it stops working, every time I call "try_send" it returns false.
I don't understand what could be the settings that are different between Release and Debug mode, and that would make the queue stop working.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
事实证明,我的发布版本没有像调试版本那样进行那么多的日志记录。在队列中累积消息的线程速度更快,这意味着其他线程(刷新消息)无法赶上。
最后消息队列是否已满。
我需要使用 timed_send 来使另一个线程有时间赶上。
It turns out that my Release version does not do as much logging as the debug one. The thread that accumulates the messages in the queue is quicker, which means that the other thread (which flushes the messages) does not catch up.
In the end the message queue if full.
I need to use timed_send to make so that the other thread gets time to catch up.