Я увлекаюсь идеей реализации общей пары Производитель / Потребитель + очередь обработки в C # для забавы. Идея состоит в том, что вы можете просто создать объекты, которые реализуют соответствующие интерфейсы IProducer и IConsumer (реализованы реализации по умолчанию), которые будут состоять в основном из делегатов, передать их в экземпляр класса QueueProcessor
, указать, сколько потребителей вы хотите, и перейти.
Но я говорю себе: «Сам, конечно, это было сделано раньше».
Так кто-нибудь знает о хорошей , универсальной реализации шаблона производителя / потребителя в C # (VB.Net тоже хорошо)? Основные требования, которые я ищу:
- Использовать обобщенные значения для производимых и потребляемых типов (входные данные, задачи с очередями и типы выходных данных или любые их комбинации)
- Позволяет указать, сколько потребителей будет работать в очереди
- Позволяет вам связывать или связывать несколько очередей в конвейер (я знаю, сложно с несколькими потребителями)
- Позволяет вам реализовать своих собственных производителей и потребителей
- Позволяет вам превратить любой IEnumerable в продюсера (хорошо, если мне придется реализовать это самостоятельно, пока это возможно)
- на основе делегатов (вы можете использовать лямбда-синтаксис для основной работы потребителя или производителя для обработки одного элемента)
Или, если его нет, какие подводные камни помешали этому, и есть ли у вас какие-либо мысли о том, как его реализовать?