Generic .Net Producer / Consumer

8

Ich spiele mit der Idee, eine generische Producer / Consumer-Paar + Verarbeitungswarteschlange in C # zum Spaß zu implementieren. Die Idee ist, dass Sie einfach Objekte erstellen können, die geeignete IProducer- und IConsumer-Schnittstellen implementieren (Standardimplementierungen vorausgesetzt), die hauptsächlich aus Delegaten bestehen, sie an eine QueueProcessor -Klasseninstanz übergeben, ihr sagen, wie viele Verbraucher Sie wollen und gehen / p>

Aber ich sage mir: "Selbst, das ist sicherlich schon einmal gemacht worden."

Wer kennt also eine gute , generische Implementierung des Producer / Consumer-Patterns in C # (VB.Net ist auch okay)? Die grundlegenden Anforderungen, die ich suche:

  • Verwenden Sie Generika für die produzierten und konsumierten Typen (Eingabe-, Warteschlangentask- und Ausgabetypen oder eine beliebige Kombination davon)
  • Erlauben Sie festzulegen, wie viele Benutzer die Warteschlange bearbeiten
  • Ermöglichen es Ihnen, mehrere Warteschlangen in einer Pipeline zu verknüpfen oder zu verketten (schwierig mit mehreren Verbrauchern, die ich kenne)
  • Ermöglichen Sie die Implementierung Ihrer eigenen Produzenten und Verbraucher
  • Erlaube es dir, IEnumerable in einen Producer zu verwandeln (okay, wenn ich das selbst implementieren muss, solange es möglich ist)
  • Delegierte basiert (Sie können die Lambda-Syntax für die grundlegenden Verbraucher- oder Produzentenarbeiten verwenden, um ein einzelnes Element zu verarbeiten)

Oder wenn es keine gibt, welche Fallstricke haben es verhindert und haben Sie irgendwelche Gedanken, wie Sie es umsetzen können?

    
Joel Coehoorn 27.05.2009, 16:54
quelle

3 Antworten

5

Microsoft CCR enthält viel von dem, was Sie brauchen.

Hier sind einige Codebeispiele und Verwendungshinweise.

    
ripper234 02.06.2009, 22:35
quelle
2

Marc Gravell hat in diese Antwort .

    
Don Kirkby 19.08.2010 22:20
quelle
0

Haben Sie sich MiscUtil angesehen?

    
Ruben Bartelink 27.05.2009 17:03
quelle