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?

È stato utile?

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 ?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top