gpt4 book ai didi

c# - 对多个文件副本使用多线程

转载 作者:太空狗 更新时间:2023-10-30 00:40:34 24 4
gpt4 key购买 nike

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

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

我用过这段代码:

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

但是使用单线程和使用双线程在时间上没有显着差异。

这可能是什么原因?

最佳答案

文件复制不是一个 CPU 进程,它是一个 IO 进程,因此多线程或并行不会帮助你。

几乎在所有情况下,多线程都会减慢您的速度。如果磁盘也是 SSD,它的读/写速度有限,但它也可以在单线程中有效地使用它。如果你使用并行性,你只会将你的速度分成几部分,这会给 HDD 带来巨大的开销

当您从不同的光盘读取和写入不同的光盘时,多线程只能帮助您处理多个光盘盒。

如果文件太小。在大多数情况下,压缩和解压缩目标驱动器上的文件会更快,如果您以低压缩率压缩文件,速度会更快

using System.IO;
using System.IO.Compression;

.....

string startPath = @"c:\example\start";
string zipPath = @"c:\example\result.zip";
string extractPath = @"c:\example\extract";

ZipFile.CreateFromDirectory(startPath, zipPath, CompressionLevel.Fastest, true);

ZipFile.ExtractToDirectory(zipPath, extractPath);

更多实现细节在这里

How to: Compress and Extract Files

关于c# - 对多个文件副本使用多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26602534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com