我必须复制大量文件(10000个文件)
因为复制需要很长时间。我尝试使用两个线程而不是单个线程,一个线程复制列表中的奇数文件,另一个复制列表中的偶数]
我已使用此代码:
ThreadPool.QueueUserWorkItem(new WaitCallback(this.RunFileCopy),object)
但是在使用单线程和使用两个线程时,时间没有显着差异。
这可能是什么原因?
我必须复制大量文件(10000个文件),因为复制需要很长时间。我试过使用两个线程而不是单线程,一个线程复制列表中的奇数文件,另一个复制......]
文件复制不是CPU进程,而是IO进程,因此多用途或并行性将无济于事。
几乎在所有情况下,多线程都会降低您的速度。如果光盘也是SSD,则r / w的速度将受到限制,并且单线程也将有效地使用它。如果您使用并行性,您只会将速度分成几部分,这将为HDD带来巨大的开销
我将在这里提供少数意见。每个人都告诉您磁盘I / O阻止您从多个线程获得任何加速。那个...有点...对,但是...