Обработка очереди элементов асинхронно в C #

Я пытаюсь создать систему, которая обрабатывает очередь работы. Система имеет следующие технические характеристики:

Система состоит из двух компонентов: рабочего и рабочего.Существует установленный верхний предел количества работающих одновременно. Этот верхний предел больше единицы.Чтобы избежать проблем, связанных с выполнением одной и той же задачи дважды, существует только один назначитель работы.

Какой дизайн вы бы использовали для создания такой системы? Вот что я думаю:

Создать коллекцию очередей, по одной очереди на каждого работникаСоздайте таймер для рабочего задания. Его работа заключается в заполнении очередей.Создайте таймер для каждого работника, передавая объект очереди в качестве состояния объекта для представления его рабочей нагрузки.Удалить и добавить в очереди, пока они заблокированы.Используйте счетчик, который увеличивается и уменьшается при блокировке, чтобы гарантировать, что одновременно выполняется не более указанного числа рабочих задач.

Я чувствую, что должен быть лучший способ сделать это. Чтобы вы посоветовали? Должен ли я перейти с таймеров на потоки для рабочих? Должны ли потоки просто вращаться / ждать, пока очередь пуста? Должны ли потоки закрываться, и рабочий назначитель может условно создать новый?

Ответы на вопрос(3)

Ваш ответ на вопрос