Мы находимся в процессе замены внутренней реализации очереди сообщений (из-за ограничений общего дизайна), и я хотел бы использовать boost::interprocess::message_queue
как замену.
Однако у нас есть особое требование: в случае, если очередь сообщений «заполнена» (приложение-потребитель либо отключено, либо отстает), отбрасываются «самые старые» сообщения.
Мы можем легко сделать это следующим образом:
do
{
if(sent = message_queue.try_send(...))
{
break;
}
else
{
message_queue.receive(...);
}
}
while(true);
Однако я не могу найти ссылку в документах, в которых говорится, что это безопасно. Очевидно, что это не традиционное использование очереди сообщений (чтобы использовать ее из нескольких приложений), но гарантированно ли она работает?