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