Универсальный .Net Производитель / Потребитель - PullRequest
8 голосов
/ 27 мая 2009

Я увлекаюсь идеей реализации общей пары Производитель / Потребитель + очередь обработки в C # для забавы. Идея состоит в том, что вы можете просто создать объекты, которые реализуют соответствующие интерфейсы IProducer и IConsumer (реализованы реализации по умолчанию), которые будут состоять в основном из делегатов, передать их в экземпляр класса QueueProcessor, указать, сколько потребителей вы хотите, и перейти.

Но я говорю себе: «Сам, конечно, это было сделано раньше».

Так кто-нибудь знает о хорошей , универсальной реализации шаблона производителя / потребителя в C # (VB.Net тоже хорошо)? Основные требования, которые я ищу:

  • Использовать обобщенные значения для производимых и потребляемых типов (входные данные, задачи с очередями и типы выходных данных или любые их комбинации)
  • Позволяет указать, сколько потребителей будет работать в очереди
  • Позволяет вам связывать или связывать несколько очередей в конвейер (я знаю, сложно с несколькими потребителями)
  • Позволяет вам реализовать своих собственных производителей и потребителей
  • Позволяет вам превратить любой IEnumerable в продюсера (хорошо, если мне придется реализовать это самостоятельно, пока это возможно)
  • на основе делегатов (вы можете использовать лямбда-синтаксис для основной работы потребителя или производителя для обработки одного элемента)

Или, если его нет, какие подводные камни помешали этому, и есть ли у вас какие-либо мысли о том, как его реализовать?

Ответы [ 3 ]

5 голосов
/ 03 июня 2009

Microsoft CCR содержит многое из того, что вам нужно.

Здесь - некоторые примеры кода и примечания по использованию.

2 голосов
/ 20 августа 2010

Марк Гравелл написал хороший пример блокировки очереди в этом ответе .

0 голосов
/ 27 мая 2009

Вы смотрели на MiscUtil ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...