Produttore/consumatore generico di .Net
-
06-09-2019 - |
Domanda
Sto giocando con l'idea di implementare una coppia produttore/consumatore generica + coda di elaborazione in C# per divertimento.L'idea è che puoi semplicemente creare oggetti che implementano le interfacce IProducer e IConsumer appropriate (implementazioni predefinite fornite), che consisteranno principalmente di delegati, passarli a un QueueProcessor
class, digli quanti consumatori vuoi e vai.
Ma dico a me stesso: "Sé, sicuramente questo è già stato fatto prima".
Quindi qualcuno sa di a Bene, generico implementazione del modello produttore/consumatore in C# (va bene anche VB.Net)?I requisiti base che cerco:
- Utilizzare i generici per i tipi prodotti e consumati (tipi di input, attività in coda e output o qualsiasi combinazione di questi)
- Consentono di specificare quanti consumatori lavoreranno in coda
- Consentono di collegare o concatenare più code in una pipeline (difficile con più consumatori, lo so)
- Consentono di implementare i propri Produttori e Consumatori
- Consentirti di trasformare qualsiasi IEnumerable in un produttore (va bene se devo implementarlo da solo, finché è possibile)
- Basato su delegati (è possibile utilizzare la sintassi lambda per il lavoro di base del consumatore o del produttore per elaborare un singolo articolo)
Oppure, se non ce n'è, quali insidie lo hanno impedito e hai qualche idea su come implementarlo?
Soluzione
MicrosoftCCR contiene gran parte di ciò di cui hai bisogno.
Qui sono riportati alcuni esempi di codice e note sull'utilizzo.
Altri suggerimenti
Marc Gravell ha scritto un bell'esempio di blocco della coda questa risposta.
Hai guardato? MiscUtil ?