我有一个使用多线程(大量线程)的程序,需要记录每个线程的数据。它输出了很多非常小的数据样本,但速度非常快。我的数据兴趣是以连续的方式记录所有样本。
所以我只需要记录几个以高频率更新的数字。 我想将数据附加到单个文件(多个线程到一个文件)。
如果我使用了节选者ea
,那会让我感到奇怪const int BufferSize = 65536; // 64 Kilobytes
StreamWriter sw = new StreamWriter("filename", true, Encoding.UTF8, BufferSize);
什么是Buffersize的影响? 在缓冲区已满或直到将流写入刷新到磁盘之前,是否不会写入数据? (或者通过使用using构造来刷新(也可以使用语句刷新结束)。至于程序设计,我可以将流编写器方法放在每个线程中,或者在程序启动时创建一个写入器(这样线程只执行追加写入)。
对我来说,快速记录很重要,所有都应写入磁盘,因为我可能不会丢失样本。我必须放心,所有方式都会被写入而不是排队,因为缓冲区还没有完整。我还需要以连续的方式提供这些数据,直到某个按钮被击中。 (不能将其存储在内存中)