繁体   English   中英

如何在多个使用者中使用TextWriter?

[英]How to use a TextWriter in multi consumers?

我有一个BlockingCollection,这个集合由不同线程上的多生产者函数填充。

我的使用者函数将收集项写入文件,但由于只有一个使用者而无法扩展。

我需要多生产者和多消费者实现。

我可以使用TextWriter.Synchronized()并在Write方法之前锁定,但是使用单个TextWriter可能浪费相同的执行时间。

您的文本编写器可能会受到磁盘IO速度的瓶颈的困扰,多进程可以轻松地大大胜过HDD。 拥有多个编写者并不能弥补这一点,这可能由于磁盘争用而使情况变得更糟。

假设您实施了高效的筛选器,最好的解决方案是使队列中的项目数达到最大,并且仅接受IO是这里的瓶颈。

如果您需要提高速度,请获得更快的磁盘(固态或RAID等),或者您可以查看二进制文件,然后使用BinaryWriter对其进行写入。 或者,当您确实需要降低速度时,可以使用结构并将其编组 尽管如果要将文件移动到其他平台,这会有风险。

编辑 :忘记了protobuf.net ,那将是我首选的向磁盘写入和读取数据的解决方案。 它是二进制的,快速且易于使用。

问候吉尔特·简

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM