Estoy escribiendo un programa donde un subproceso necesita insertar elementos en la cola, y uno o más subprocesos saca elementos de la cola y los procesa. Para evitar que se quede sin memoria, me gustaría que el subproceso del productor durmiera cuando la cola se llene. Algunos artículos tienen una prioridad más alta que otros, por lo que me gustaría que se procesen primero. Si los artículos tienen la misma prioridad, me gustaría que el que se agregó primero se procese primero.Cola prioritaria observable con buffers protegida contra subprocesos?
Quiero mostrar los 100 mejores elementos más o menos en una cuadrícula de datos WPF, por lo que también debe accederse mediante una hebra de interfaz de usuario. Sería bueno si pudiera notificar al hilo de UI que también ha habido una actualización, es decir, implementa IObservable.
¿Hay una clase de contenedor que hará todo esto?
Para obtener puntos de bonificación, estoy bastante seguro de que no es necesario bloquear la cola completa tanto en enqueing como dequeing.
.NET 4 implementaciones están bien.
BlockingCollection http://msdn.microsoft.com/en-us/library/dd997371.aspx parece prometedor ... pero no menciona nada sobre las prioridades. Sí dice que puede encapsular cualquier cosa que implemente IProducerConsumerCollection ... ¿hay alguna de esas que sea una cola de prioridad? – mpen
Vea este ejemplo http://msdn.microsoft.com/en-us/library/dd460690.aspx –
Las tareas de FWIW se pueden convertir en observables de Rx. ;) –