繁体   English   中英

使用C ++将多线程文件复制到其他硬盘驱动器

[英]Multithread file copy to different hard drive using c++

我需要开发一个应用程序,该应用程序可以使用一个线程来读取源文件,而另一个线程来编写它们,其复制速度比OS复制快。 源文件和目标文件位于不同的硬盘驱动器中。

我的问题是如何将源读取线程的结果传递到目标写入线程而又不导致某些竞争条件,并且仍然保持复制过程的最高性能,以实现比OS复制更快的复制过程。

使用有界队列。
您可以使用任何队列( TBB ,std :: deque, cirtular缓冲区等)。 如果不是线程安全的和/或阻塞的,则在其周围进行同步并使用条件变量进行通知。 您不需要队列中的技巧,因为将指向一大块数据的指针传递到队列中的速度比I / O快得多,但是如果您真的想过度优化,请检查干扰器在此进行介绍)。

致审阅者:请注意,问题是有关在不同的硬盘驱动器之间进行复制,因此多线程副本将对其有利。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM