首页 > 解决方案 > 以非常低的资源要求强制文件复制

问题描述

我有一个用 C++ 编写的程序,它永久地将文件写入硬盘。使用的硬盘足够快,可以在不减慢应用程序速度的情况下处理此问题。

现在我不时喜欢将文件复制/同步到我们的服务器的程序。我面临的挑战是我不希望副本使用许多系统资源,因此它不会减慢应用程序或写入新文件的速度。

我想在后台线程上运行复制/同步会有所帮助,但它仍然会给硬盘带来压力并减慢新文件的写入速度,对吧?

所以我想我的问题是如何控制复制操作的速度?还是有另一种更好的方法来做到这一点?

非常感谢任何帮助。

丹尼斯

标签: c++file-copying

解决方案


重新阅读 - “现在我不时喜欢将文件复制/同步到我们的服务器的程序。我面临的挑战是我不希望副本使用许多系统资源,因此它不会减慢应用程序或新文件的写入。”

这意味着您实际上并没有试图避免努力工作。您只是不想在其他文件工作上落后。

我会创建一个后台线程来完成所有磁盘访问;并提供 2 个队列供其使用。第一个是要写入的新文件;第二个是要复制的文件。然后,该线程可以通过一次处理块来全速使用磁盘;优先级是从新文件区域获取块。这将允许您开始复制;然后在需要处理大量文件时完全停止复制(以防出现突发情况),然后在处理完所有文件后尽快复制。


推荐阅读