Peek-Check-Dequeue
вызывает какую-то блокировку. Либо вы сами блокируете, что структура данных выполняет блокировку (потребуется блокировка, затем вызов вашего кода для выполнения проверки, а затем разблокировка).
Нет ничего встроенного или обычно используемого, чтобы помочь с этим. Просто сделайте запор самостоятельно.
Если у вас очень высокая частота таких операций (миллионы в секунду), тогда возникают проблемы с блокировкой. На этом этапе вам понадобится более умный дизайн. Это было бы больше работы и больше риска для ошибок.