我有一個使用多線程(大量線程)並需要記錄來自每個線程的數據的程序。它輸出很多非常小的數據樣本,但速度非常快。我的數據興趣是以連續的方式記錄所有樣本。緩衝區大小的影響
所以我只需要記錄幾個更新頻率高的數字。 我想將數據附加到單個文件(多個線程到一個文件)。
什麼想知道我,如果我使用的StreamWriter EA
const int BufferSize = 65536; // 64 Kilobytes
StreamWriter sw = new StreamWriter("filename", true, Encoding.UTF8, BufferSize);
緩衝區大小的請告訴我效果的? 在緩衝區滿或直到流寫入器刷新到磁盤之前,是否寫入數據? (或者通過使用使用結構來刷新(也可以使用語句刷新結束)。至於程序設計,我可以在每個線程中放入流寫入器方法,或者在程序啓動時創建一個寫入器(以便線程只執行附加寫入)
對我而言,快速記錄非常重要,並且所有數據都應該寫入磁盤,因爲我可能不會丟失樣本,我必須確保它能夠全程寫入並且不會排隊,因爲緩衝區尚未滿。在直到一些按鈕被打了一個連續的方式提供這些數據。(不能將它存儲在內存中)
您的要求聲明您*不*要緩衝。所以當然緩衝區大小根本不重要。設置AutoFlush = true就是這樣。 –