使用多线程处理多个文件副本

问题描述 投票:4回答:2

我必须复制大量文件(10000个文件)

因为复制需要很长时间。我尝试使用两个线程而不是单个线程,一个线程复制列表中的奇数文件,另一个复制列表中的偶数]

我已使用此代码:

ThreadPool.QueueUserWorkItem(new WaitCallback(this.RunFileCopy),object)

但是在使用单线程和使用两个线程时,时间没有显着差异。

这可能是什么原因?

我必须复制大量文件(10000个文件),因为复制需要很长时间。我试过使用两个线程而不是单线程,一个线程复制列表中的奇数文件,另一个复制......]

c# multithreading io parallel-processing file-copying
2个回答
8
投票

文件复制不是CPU进程,而是IO进程,因此多用途或并行性将无济于事。

几乎在所有情况下,多线程都会降低您的速度。如果光盘也是SSD,则r / w的速度将受到限制,并且单线程也将有效地使用它。如果您使用并行性,您只会将速度分成几部分,这将为HDD带来巨大的开销


0
投票

我将在这里提供少数意见。每个人都告诉您磁盘I / O阻止您从多个线程获得任何加速。那个...有点...对,但是...

© www.soinside.com 2019 - 2024. All rights reserved.