Безопасно ли использовать boost::interprocess::message_queue для нескольких приложений?

Мы находимся в процессе замены внутренней реализации очереди сообщений (из-за ограничений общего дизайна), и я хотел бы использовать boost::interprocess::message_queue как замену.

Однако у нас есть особое требование: в случае, если очередь сообщений «заполнена» (приложение-потребитель либо отключено, либо отстает), отбрасываются «самые старые» сообщения.

Мы можем легко сделать это следующим образом:

do
{
   if(sent = message_queue.try_send(...))
   {
      break;
   }
   else
   {
      message_queue.receive(...);
   }
}
while(true);

Однако я не могу найти ссылку в документах, в которых говорится, что это безопасно. Очевидно, что это не традиционное использование очереди сообщений (чтобы использовать ее из нескольких приложений), но гарантированно ли она работает?


person Chad    schedule 09.06.2014    source источник


Ответы (1)