Я использую одиночную очередь для одиночной очереди без блокировки для интенсивного сетевого приложения. У меня есть куча рабочих потоков, получающих работу в их собственных отдельных очередях, которые они затем деактивируют и обрабатывают.
Удаление блокировок из этих очередей значительно улучшило производительность при высокой нагрузке, , но они больше не блокируются, когда очереди пусты, что, в свою очередь, приводит к резкому увеличению использования ЦП.
Как я могу эффективно блокировать поток до тех пор, пока он не сможет успешно удалить что-либо или будет убит/прерван?