我根据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
,但这只是意味着超时已过期。
答案 0 :(得分:0)
作为解决方案,我在超时到期时抛出异常并重新创建MessageQueueReceiver对象。