Estamos desarrollando una aplicación que lee continuamente datos de varios dispositivos de hardware externos. La velocidad de datos está entre 0.5MB - 10MB/seg, dependiendo de la configuración del hardware externo.Registro/registro rápido de datos en una hebra separada en C#
La lectura de los dispositivos externos se está realizando actualmente en un BackgroundWorker. Tratar de escribir los datos adquiridos en el disco con este mismo BackgroundWorker no parece ser una buena solución, entonces lo que queremos hacer es poner estos datos en cola para ser escritos en un archivo y tener otro hilo para delectar los datos y escribir en un archivo. Tenga en cuenta que habrá un solo productor y un solo consumidor para los datos.
Estamos pensando en utilizar una cola sincronizada para este fin. Pero pensamos que esta rueda ya debe haber sido inventada muchas veces, por lo que deberíamos pedirle a la comunidad de SO que nos dé su opinión.
Cualquier sugerencia o comentario sobre las cosas que debemos tener en cuenta sería apreciada.
Daniel, ¿crees que podemos usar las colas .NET para este propósito? Estamos pensando en utilizar ConcurrentQueue para almacenar punteros a los datos, pero preasignar la memoria para los datos antes de iniciar el registro. – SomethingBetter
¿Qué tipo de datos registra? Structs, bytes simples, de hecho, mi pregunta es sobre eso si los datos se pueden serializar fácilmente en un paquete y leer de forma secuencial. Usted es de bajo nivel aquí, permanezca bajo nivel. –