Pergunta

Estou brincando com a idéia de implementar uma fila genérica par Produtor / Consumidor + processamento em C # para se divertir. A idéia é que você pode apenas criar objetos que implementam as interfaces IProducer e IConsumer apropriados (implementações padrão fornecido), que consistem principalmente de delegados, passá-las para uma instância de classe QueueProcessor, diga a ele quantos consumidores que você quer, e ir embora.

Mas eu digo a mim mesmo: "Eu, certamente este foi feito antes."

Então, alguém sabe de um boa , genérico implementação do padrão de produtor / consumidor em C # (VB.Net é bom, também)? Os requisitos básicos que eu estou procurando:

  • Utilização genéricos para os tipos produzidos e consumidos (entrada, tarefa em fila, e os tipos de saída, ou qualquer combinação dos mesmos)
  • permitem que você especifique quantos consumidores irão trabalhar a fila
  • Permite-lhe ligar ou vários cadeia de filas em um pipeline (complicado com vários consumidores, eu sei)
  • Permite-lhe implementar suas próprias Produtores e Consumidores
  • Permite-lhe transformar qualquer IEnumerable em um produtor (tudo bem se eu tenho que implementar isso sozinha, contanto que é possível)
  • Delegado base (você pode usar a sintaxe lambda para o consumidor ou produtor trabalho básico para processar um único item)

Ou se não houver nenhum, o que armadilhas ter evitado isso e você tem alguma opinião sobre como implementá-lo?

Foi útil?

Solução

Microsoft CCR contém muito do que você precisa.

Aqui estão alguns exemplos de código e notas de uso.

Outras dicas

Marc Gravell escreveu um bom exemplo bloqueando fila na esta resposta .

Você já olhou para MiscUtil ?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top