使用多线程读取和处理大量文件

时间:2017-03-17 08:22:47

标签: c# multithreading parallel-processing file-read

我需要每两小时读取和处理近200个文件。文件大小在500KB到10 MB之间变化。

实施该方法的最佳方式是什么?读取所有文件是I / O作业。另一方面,我必须将该文件中的json序列化为通用列表,这是一个CPU作业。

我是否需要将它们与两个不同的并行作业分开,例如首先获取所有文件然后处理它们?或者在并行循环中一个接一个地获取和处理?

我还需要最好的存储类型。我的意思是在哪里使用并发包或只是列表?

谢谢。

1 个答案:

答案 0 :(得分:0)

我无法给出更具体的答案,因为它被标记为C#,而且我对这种语言并不是很精通。

但是,您可以从多个途径处理此问题:

  • 只是按顺序逐个进行,除非你在一个非常慢的CPU,磁盘或最小内存限制(如果你是,你不会使用C#!),那么它会相对较快地完成。当然,通过以下两个建议可以使事情变得更加困难:
  • 如果应用程序更多地受I / O限制,那么您可以使用C#等效于BSD套接字C select()(ASync)语句,然后只使用单个线程来解析和连接该数据
  • 按照你的建议,为每个文件打开多个线程,解析并序列化这些文件的内容,然后将它们合并到主线程中,以便在所有线程完成后进行后续处理。