如何知道boost :: interprocess :: message_queue已从系统中删除?

时间:2015-05-01 17:22:18

标签: c++ boost boost-interprocess

我根据boost::interprocess::message_queue创建发件人/收件人包装,用于从一个流程发送邮件并在另一个流程中接收,您可以在此处查看来源:https://gist.github.com/onto/c322bb0a33433b775966

有一个问题,如果我破坏发件人对象,message_queue已从系统中删除,但接收器未被通知。如何解决?

如果创建message_queue对象时不存在MessageQueueReceiver,则会抛出异常,这对我来说是正常的行为,但如果我从系统message_queue删除boost::interprocess::message_queue::receive则不会抛出任何事情,boost::interprocess::message_queue::timed_receive都会返回false,但这只是意味着超时已过期。

1 个答案:

答案 0 :(得分:0)

作为解决方案,我在超时到期时抛出异常并重新创建MessageQueueReceiver对象。