Принудительное копирование файла с очень низкими требованиями к ресурсам - PullRequest
0 голосов
/ 14 мая 2018

У меня есть программа, написанная на C ++, которая постоянно записывает файлы на жесткий диск.Используемый жесткий диск достаточно быстр, чтобы справиться с этим, не замедляя работу приложения.

Теперь время от времени мне нравится программа для копирования / синхронизации файлов на наш сервер.Сложность, с которой я сталкиваюсь, заключается в том, что я не хочу, чтобы копия использовала много системных ресурсов, поэтому она не замедляет работу приложения или запись новых файлов.

Я думаю, что запуск копирования / синхронизации в фоновом потоке поможетв некоторой степени, но это все равно будет подчеркивать жесткий диск и замедлять запись новых файлов, верно?

Итак, я думаю, мой вопрос заключается в том, как я могу контролировать скорость операции копирования?Или есть другой лучший способ сделать это?

Любая помощь действительно ценится.

Деннис

1 Ответ

0 голосов
/ 14 мая 2018

Перечитайте это - «Время от времени мне нравится, когда программа копирует / синхронизирует файлы на наш сервер. Проблема, с которой я сталкиваюсь, заключается в том, что я не хочу, чтобы копия использовала много системных ресурсов, чтобы она не замедляласьприложение или написание новых файлов. "

Это означает, что вы на самом деле не пытаетесь избежать усердной работы над боксом;вы просто не хотите отстать от других ваших файловых операций.

Я бы создал фоновый поток, который обеспечивает весь доступ к вашему диску;и предоставьте 2 очереди для работы.Первый - это новые файлы для записи;2-ой - файлы для копирования.Этот поток может затем использовать диск на полной скорости, работая с чанками одновременно;с приоритетом получения чанка из новой области файла.Это позволит вам начать делать копию;и затем полностью прекратите копирование, когда нужно обработать много файлов (в случае пакета), а затем скопируйте так быстро, как только сможете, после того как все будет обработано.

...