Суть в том, что таймаут это workaround бага. Типа если вдруг у нас там баг, то мы остановимся через 5 минут (ага, а почему 5?). Но реакция на баг должна быть не в workaround-е, а в фиксе бага
Нет. В моей реальности таймауты здесь - это способ недопустить бага. Вот у нас есть примитив, по которому мы останавливаемся. Мы его проверяем (с заданной регулярностью). Вот тут есть примитив, на котором мы ждём. Но ждём не бесконечно, а столько, чтобы регулярно проверять другой примитив. И т. д. Модели могут быть разные, но суть - одна. И вот _тогда_ багов нет, и всё останавливается. А: "так, у нас тут очередь, а там там - кондвар на ожидание, давайте мы сделаем так, что если кондвар нотифицирован, а очередь пуста - это значит, что надо останавливаться" - как раз таки путь к багам.