我有一个使用多线程(大量线程)并需要记录来自每个线程的数据的程序。它输出很多非常小的数据样本,但速度非常快。我的数据兴趣是以连续的方式记录所有样本。缓冲区大小的影响
所以我只需要记录几个更新频率高的数字。 我想将数据附加到单个文件(多个线程到一个文件)。
什么想知道我,如果我使用的StreamWriter EA
const int BufferSize = 65536; // 64 Kilobytes
StreamWriter sw = new StreamWriter("filename", true, Encoding.UTF8, BufferSize);
缓冲区大小的请告诉我效果的? 在缓冲区满或直到流写入器刷新到磁盘之前,是否写入数据? (或者通过使用使用结构来刷新(也可以使用语句刷新结束)。至于程序设计,我可以在每个线程中放入流写入器方法,或者在程序启动时创建一个写入器(以便线程只执行附加写入)
对我而言,快速记录非常重要,并且所有数据都应该写入磁盘,因为我可能不会丢失样本,我必须确保它能够全程写入并且不会排队,因为缓冲区尚未满。在直到一些按钮被打了一个连续的方式提供这些数据。(不能将它存储在内存中)
您的要求声明您*不*要缓冲。所以当然缓冲区大小根本不重要。设置AutoFlush = true就是这样。 –