Stiamo sviluppando un'applicazione che legge continuamente i dati da un numero di dispositivi hardware esterni. La velocità dati è compresa tra 0,5 MB - 10 MB/sec, a seconda della configurazione hardware esterna.Registrazione/registrazione rapida dei dati su una filettatura separata in C#
La lettura dei dispositivi esterni viene attualmente eseguita su un BackgroundWorker. Cercare di scrivere i dati acquisiti su disco con questo stesso BackgroundWorker non sembra essere una buona soluzione, quindi quello che vogliamo fare è, accodare questi dati per essere scritti su un file, e fare in modo che un altro thread rimuova i dati e scriva un file. Si noti che ci sarà un singolo produttore e un singolo consumatore per i dati.
Stiamo pensando di utilizzare una coda sincronizzata per questo scopo. Ma pensavamo che questa ruota fosse stata inventata così tante volte, quindi dovremmo chiedere alla comunità SO di dare qualche input.
Qualsiasi suggerimento o commento su cose che dovremmo fare attenzione sarebbe apprezzato.
Daniel, pensi che possiamo usare le code .NET per questo scopo? Stiamo pensando di utilizzare ConcurrentQueue per archiviare i puntatori ai dati, ma pre-allocare la memoria per i dati prima di iniziare la registrazione. – SomethingBetter
Che tipo di dati registrate? Strutturazioni, semplici byte, infatti, la mia domanda è che se i dati possono essere serializzati facilmente in pacchetto e letti in sequenza. Sei di basso livello qui, rimani di basso livello. –