C#读取文本文件行多线程

Shi*_*TCo 0 c# multithreading

我想用c#编写一个快速多线程程序来读取文件.

所以文件必须拆分成一些部分,每个部分都在不同的线程中处理.对于前:

Line1
Line2
Line3
Line4
Run Code Online (Sandbox Code Playgroud)

必须分成4行,如下所示:

Line1 => thread 1
Line2 => thread 2
Line3 => thread 3
Line4 = > thread 4
Run Code Online (Sandbox Code Playgroud)

我使用StreamReader.readLine()但它不能读取指定行.

评论:它需要加速程序,所以我想在单独的线程中读取文件.

Ste*_*eve 5

除非你使用固定长度的线,否则这是不可能的.

为什么?因为为了确定"线"分割的位置,你需要找到换行符......这意味着你需要先读取文件.

现在,如果您只是想读取每一行执行一些额外的"处理" - 这是可能的并且相对直接使用a ThreadPool.


Jon*_*eet 5

您应该在单个线程中读取文件 - 但是然后将每行的处理产生到不同的线程,例如通过将其添加到生产者/消费者队列中.

即使你可以寻找文本文件中的特定行(通常你不能),你真的不希望磁盘晃动 - 这只会减慢速度.从磁盘上获取数据的最快方法是按顺序读取数据.通过各种方式将处理该行的所有内容推迟到"将二进制数据解码为文本"到其他线程,但您确实不希望IO在多个线程中.