Sam*_*ina 1 c# multithreading asynchronous backgroundworker large-files
我有10个超过100Mb的列表,每个都有电子邮件,我想尽可能快地使用多线程处理它们而不将它们加载到内存中(比如逐行读取或读取小块)
我创建了一个函数,它根据正则表达式删除无效的函数,另一个函数根据每个域将它们组织到其他列表.
我设法使用一个线程:while(reader.Peek()!= -1),但它太长了.
如何在并行处理列表时使用多线程(大约100 - 200)和背景工作者或某些东西来使用表单?
我是csharp的新手:P
除非数据位于多个物理磁盘上,否则任何多个线程都可能会减慢而不是加速该过程.
会发生什么事情,而不是读取连续数据(非常快),你最终会寻找一个地方来读取一个线程的数据,然后寻找其他地方来读取另一个线程的数据,等等.寻求相对较慢,因此最终变慢 - 通常慢得多.
关于你可以做的最好的事情是将一个线程专用于从每个物理磁盘读取数据,然后用另一个线程来处理数据 - 但除非你的处理非常复杂,或者你有很多快速硬盘驱动器,否则一个用于处理的线程可能是完全足够.