¿Qué tipo de IProducerConsumerCollection <T> usar para mi tarea?

Tengo exactamente 100 sensores cada uno "midiendo" datos propios. Tengo exactamente una DataSender que debe enviar información de "sensores". Se debe enviar la información más reciente.

El ancho de banda del canal puede ser menor que los datos producidos por 100 sensores. En este caso, se pueden omitir algunos datos, pero deberíamos ser "más o menos justos". Por ejemplo, podríamos omitir cada segunda medición de cada sensor.

No sé con qué frecuencia cada sensor genera datos, pero en general generan datos con bastante frecuencia.

Después de mis otras publicaciones:

¿Cómo crear singleton que siempre se ejecuta en hilo separado? Ejemplo de productor / consumidor modificado, ¿algún problema con él?

He decidido que tengo @ clási Productor / Consumidor problema con

100 productores y 1 Consumidor

Me han sugerido usarBlockingCollection para esto. El único problema conBlockingCollection: una vez que haya agregado el elemento, no podráreemplaza eso. Pero en mi aplicación, si el sensor produce un nuevo valor, y el valor anterior no fue procesado porConsumer, el valor debe serreemplazad.

¿Debo usar unConcurentDictionary oConcurentBag para esa tarea?

Conceptualmente,todo lo que necesit es una matriz de 100 elementos.

Sensor # 33 deberíareemplaza su valor en la matriz [33]:

| Sensor | Value |
|--------|-------|
|      1 |       |
|      2 |       |
|      3 |       |
/......../......./
|     32 |       |
|     33 | 101.9 |
|     34 |       |
/......../......./
|     98 |       |
|     99 |       |
|    100 |       |

Consumer debería tomar valor dearray[33] y si no es nulo, envíelo y configure la matriz [33] en nulo. @Consumer debería reaccionar ante cualquier valor no nulo en la matriz lo antes posible.

Respuestas a la pregunta(2)

Su respuesta a la pregunta