Que tipo de IProducerConsumerCollection <T> usar para minha tarefa?

Tenho exatamente 100 sensores cada um dos "dados de medição". Eu tenho exatamente um DataSender que deve enviar informações de "sensores". As informações mais recentes devem ser enviadas.

largura de banda do canal pode ser menor que os dados produzidos por 100 sensores. Nesse caso, alguns dados podem ser ignorados - mas devemos ser "mais ou menos justos". Por exemplo, podemos pular todas as segundas medidas de cada senso

Não sei com que frequência cada sensor gera dados, mas em geral eles geram dados com bastante frequênci

Depois dos meus outros posts:

como criar singleton que sempre rodando em thread separadxemplo de produtor / consumidor modificado, algum problema com el

Decidi que tenho clássicos Produtor / Consumidor Problema com

100 produtores e 1 consumidor

Fui sugerido para usarBlockingCollection por esta. O único problema comBlockingCollection - depois de adicionar o item, você não podesubstitui isto. Mas, na minha aplicação, se o sensor produzir um novo valor, e o valor anterior não foi processado peloConsumer, o valor deve ser substituído.

Devo usar umConcurentDictionary ouConcurentBag para essa tarefa?

Conceitualmente,tudo que eu precis é uma matriz de 100 elemento

Sensor # 33 deveriasubstitui seu valor na matriz [33]:

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

Consumer deve receber valor dearray[33] e, se não for nulo, envie-o e defina a matriz [33] para nulo.Consumer deve reagir com valores não nulos na matriz o mais rápido possíve

questionAnswers(2)

yourAnswerToTheQuestion