Ho un problema di produttore/consumatore. Attualmente ho un semplice Queue
circondato da un lock
.ConcurrentQueue che mi consente di attendere su un produttore
Sto provando a sostituirlo con qualcosa di più efficiente.
La mia prima scelta è stata quella di utilizzare un ConcurrentQueue
, ma non vedo come far attendere il mio consumatore sul messaggio successivo prodotto (senza fare Thread.Sleep).
Inoltre, vorrei essere in grado di cancellare l'intera coda se le sue dimensioni raggiungono un numero specifico.
Puoi suggerire qualche classe o implementazione esistente che soddisfi i miei requisiti?
Hai provato il [ 'BlockingCollection'] (https://msdn.microsoft.com/en- us/library/dd267312% 28v = vs.110% 29.aspx) classe? –
Dai un'occhiata a [questa domanda] (http://stackoverflow.com/questions/34255759/multiple-producers-single-consumer-locking-schema). Sebbene riguardi più produttori, non importa se hai un singolo produttore. –
Puoi elaborare su _ "per cancellare l'intera coda se le sue dimensioni raggiungono ..." _? Per le altre esigenze, BlockingCollection è la scelta ideale. –