Любой тип, который явно не заявляет свои гарантии безопасности потока, всегда должен контролироваться мьютексом.Тем не менее, stdlib вашей реализации может допускать некоторые варианты этого - но вы не можете знать для всех реализаций std :: queue.
Поскольку std :: queue оборачивает другой контейнер (это адаптер контейнера), вынужно взглянуть на базовый контейнер, который по умолчанию является deque.
Возможно, вам будет проще, лучше или более портативно написать собственный адаптер контейнера, который дает необходимые вам гарантии.Я не знаю ничего такого, что делает это именно для очереди в Boost.
Я недостаточно изучил C ++ 0x, чтобы узнать, есть ли у него какое-либо решение для этого из коробки., но это может быть другой вариант.