.Net genérico Produtor / Consumidor
-
06-09-2019 - |
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?
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 ?