使用c++将多线程文件复制到不同的硬盘驱动器



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

我的问题是如何将源读取线程的结果传递到目标写入线程,而不会产生一些竞争条件,并且仍然保持复制进程的最佳性能,以实现比操作系统复制更快的复制进程。

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

致评审员:请注意,问题是关于在不同硬盘驱动器之间进行复制,因此多线程复制将使其受益。

相关内容

最新更新