在C#中单独的线程上快速记录/记录数据

Som*_*ter 8 c# queue file-io logging thread-safety

我们正在开发一种应用程序,可以连续从多个外部硬件设备读取数据.数据速率介于0.5MB - 10MB /秒之间,具体取决于外部硬件配置.

目前正在BackgroundWorker上读取外部设备.尝试使用相同的BackgroundWorker将获取的数据写入磁盘似乎不是一个好的解决方案,所以我们要做的是,将这些数据排队以写入文件,并使另一个线程将数据出列并写入一份文件.请注意,数据将有一个生产者和单个消费者.

我们正在考虑为此目的使用同步队列.但是我们认为这个轮子必须已经发明了很多次,所以我们应该向SO社区提出一些意见.

对于我们应该注意的事项的任何建议或意见将不胜感激.

Dan*_*dor 2

我非常有信心你的队列会很顺利。但请确保使用有效的存储/检索数据方法,而不是通过内存分配/释放来彻底修改日志记录过程。我会选择一些预先分配的内存缓冲区,并将其用作循环队列。