C ++实现限制文件复制

时间:2019-01-05 21:05:03

标签: c++11 io copy filesystems

我需要在我的项目中实现限制复制,请考虑这种情况,就像Web服务需要为每个请求读取存储。同时,可以刷新商店数据。 数据托管在SSD中,新数据下载到另一个磁盘。 在系统运行期间,如果有新数据可用,我需要将新数据复制到SSD磁盘上,这需要限制复制,以最大程度地减少对SSD读取的影响。

最大写入速度(SSD)不受限制,可以为100-150MB / s。

在我的实现中:

TotalCopyTime = FileSize / CopySpeed(from config)
TotalCopyLoops = FileSize / WriteUnitSize
Get each write time T in runtime.
SleepTimeBetweenEachWrite = [TotalCopyTime - (T * TotalCopyLoops)] / n

基于上述内容,代码将继续从源读取数据,并写入目标,并在每次写入之间插入Sleep。

问题是:如果复制速度为16MB / s,则实际写入时间大于SleepTimeBetweenEachWrite。因此,即使复制速度为16MB / s,对读取操作仍然有很大影响。

此外,我使用了一些具有快速配置的复制工具,复制速度为16MB / s,对读取操作没有影响。

我想知道该工具如何实现限制复制? (UltraCopier之类的工具)

0 个答案:

没有答案