我需要从不同线程逐个将数据缓冲区写入文件。为了避免锁定,我正在写入不同的文件,比如“file_1”、“file_2”,最后将所有这些文件合并到“file”。这种方法好吗?有更好的建议吗?
有些文件非常大,包含数千个缓冲区。因此,数以千计的临时文件被创建,随后被合并和清理。
最佳答案
我的直觉是,修改文件的成本很高,而且管理数千个文件听起来既复杂又容易出错。
不如让一个专门的线程来进行写作怎么样。其他线程只是将它们的消息添加到等待写入的队列中。虽然会有一些同步开销,但实际在锁中完成的工作非常少,只是将指向消息的“指针”复制到队列中。由于打开文件并写入文件可能比使用互斥体更昂贵,您实际上可能会提高性能。
关于c# - 从多个线程无锁写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19902392/