@mafia8

Что такое асинхронное копирование файлов?

Что такое асинхронное копирование файлов?
  • Вопрос задан
  • 1105 просмотров
Решения вопроса 3
Rou1997
@Rou1997
Либо копирование файлов в нескольких потоках, либо копирование в одном потоке, но отдельном от основного (GUI) потока.
Ответ написан
Комментировать
@Mercury13
Программист на «си с крестами» и не только
В WinAPI асинхронное копирование файлов — это использование так называемого «асинхронного ввода-вывода» (Overlapped I/O), механизма, который не поднимает новых потоков (по крайней мере явно), но позволяет параллельно с вводом-выводом делать что-то другое. В данном случае — читать и записывать одновременно.

Что это даёт?
1. Уменьшает простои программы и этим ускоряет копирование.
2. Если копирование в пределах одного механического AHCI-диска (из каталога в каталог, с раздела на раздел)— это позволяет оптимизировать маршруты головки на уровне драйвера или контроллера.
3. Если копирование между разными накопителями — накопители будут действовать параллельно.
Ответ написан
Комментировать
@spotifi
У тебя 100 файлов. Каждый копируется по 5 секунд.
Если ты будешь копировать их по очереди - это синхронное копирование файлов, которое займет не менее 500 секунд.

Асинхронное копирование - это копирование нескольких файлов за раз. Например, группами по 5 файлов. Каждая группа будет копировать по 10 секунд, а все вместе, следовательно, 100/5*10 = 200 секунд.

Асинхронное копирование не всегда дает выигрыш. Но чаще всего копирование нескольких файлов за раз эффективнее.

Есть и еще бонус. Если есть один огромный файл и много маленьких. Если ты начнешь копировать большой файл, то не дождешься маленьких файлов еще очень долго.
Но если копировать асинхронно всего в 2 поток, то параллельно первому огромному файлу можно успеть скопировать все маленькие и уже что-то начинать с ними делать на том конце, не дожидаясь первого огромного файла.

Идея асинхронности в том и заключается, что некое действие разбивается на маленькие этапы и эти этапы запускаются одновременно. А там - кто первый дойдет к финишу, тот быстрее освободит ресурсы для следующего в очереди.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы