necesito de un solo productor, de un solo consumidor consulta FIFO porque¿Es bueno usar BlockingCollection <T> como consulta FIFO de un solo productor y consumidor único?
- necesito para procesar los mensajes en el orden que recibieron.
- Necesito hacer esto asincrónico porque la persona que llama no debe esperar mientras estoy procesando el mensaje.
- El procesamiento del siguiente mensaje debe iniciarse solo cuando finaliza el procesamiento del mensaje anterior. En ocasiones, la frecuencia de los mensajes de "recepción" es más alta que la frecuencia de los mensajes de "procesamiento". Pero en promedio debería poder procesar todos los mensajes, solo a veces tengo que "poner en cola" un paquete de ellos.
así que es bastante como TCP/IP pienso, donde se tiene un productor y un consumidor, a veces se puede recibir mensajes más rápido que puede procesar, así que hay que consultarlos. Donde el orden ES importante y el que llama no está interesado en absoluto en lo que haces con esas cosas.
Esto suena bastante fácil y es probable que puedo utilizar en general Queue
para eso, pero quiero utilizar BlockingCollection
por eso, porque no quiero que escribir ningún código con ManualResetEvent
etc.
¿Qué tan adecuados para mi tarea BlockingCollection
y probablemente puedas sugerir algo más?
Espero que la implementación FIFO predeterminada de 'BlockingCollection' no se modifique en algunas de las siguientes versiones , pero esta es otra pregunta ... – javapowered
Creo que deberías estar bien siempre y cuando estés haciendo referencia a la interfaz 'IProducerConsumerCollection', y la implementación de las clases BCL no puede cambiar de manera principal como FIFO a otra cosa – sll
Veo que el método Start() espera a los dos tareas para completar. Obviamente, la tarea 'producerWorker' terminará, pero el' consumerWorker' nunca terminará. ¿Debería tomarse esto en cuenta? –