我想用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()但它不能读取指定行.
评论:它需要加速程序,所以我想在单独的线程中读取文件.
除非你使用固定长度的线,否则这是不可能的.
为什么?因为为了确定"线"分割的位置,你需要找到换行符......这意味着你需要先读取文件.
现在,如果您只是想在读取每一行后执行一些额外的"处理" - 这是可能的并且相对直接使用a ThreadPool.
您应该在单个线程中读取文件 - 但是然后将每行的处理产生到不同的线程,例如通过将其添加到生产者/消费者队列中.
即使你可以寻找文本文件中的特定行(通常你不能),你真的不希望磁盘晃动 - 这只会减慢速度.从磁盘上获取数据的最快方法是按顺序读取数据.通过各种方式将处理该行的所有内容推迟到"将二进制数据解码为文本"到其他线程,但您确实不希望IO在多个线程中.
| 归档时间: |
|
| 查看次数: |
2542 次 |
| 最近记录: |