Я исследую конструкцию процессора рабочей очереди, в котором QueueProcessor извлекает объект шаблона команд из очереди и выполняет его в новом потоке.
Я пытаюсь разобраться с потенциальным сценарием блокировки очереди, в котором вложенные команды могут привести к тупику.
Е.Г.
Объект FooCommand помещается в очередь, которую затем QueueProcessor выполняет в своем собственном потоке.
Выполнение FooCommand помещает BarCommand в очередь.
Если предположить, что максимально допустимое количество потоков составляет только 1 поток, QueueProcessor будет находиться в тупиковом состоянии, поскольку FooCommand бесконечно ожидает завершения BarCommand.
Как можно справиться с этой ситуацией? Является ли объект очереди правильным объектом для работы? Существуют ли какие-либо сдержки и противовесы, которые можно использовать для решения этой проблемы?
Большое спасибо. (приложение использует C # .NET 3.0)