Почему использование ключа /mt в robocopy приводит к паузе перед запуском?

Почему использование ключа /mt в robocopy приводит к паузе перед запуском?

Сегодня я узнал, что можно использовать/мтпереключиться сробокопиячтобы ускорить передачу файлов. Я попробовал несколько разных вариантов/мт:#, включая 1, 8, 17, 30 и 32. Я обнаружил, что 8 (по умолчанию) по какой-то причине оказался самым быстрым.

я полагаю, что/мт:1то же самое, что не использовать/мтвообще. Но когда я не использую/мт, передача файла начинается немедленно, и я вижу, как текст прокручивается мгновенно. Если я использую переключатель /mt, независимо от того, ставлю ли я после него число или нет, и какое бы число я ни использовал, будет вызван robocopy, который отобразит оператор robocopy в пакетном файле примерно на 5-10 секунд, а затем выполнится (вот тогда я наконец увижу текст, проходящий мимо, что указывает на передачу файла).

Сначала я думал, что использование ключа /mt может привести к тому, что пакетный файл зависнет на несколько секунд, ожидая какой-то многопоточной службы или чего-то еще. Но я попробовал /mt:1, что должно быть то же самое, что и не использовать его, и он зависает так же, как и при указании любого другого числа. Единственный раз, когда он сразу начинает передачу файлов, это когда ключ /mt вообще не используется.

Очевидно, я использую /mt, чтобы ускорить выполнение скрипта. Это займет всего около 20-30 секунд в зависимости от того, используется ли /mt и какое число я использую, поэтому каждая секунда имеет значение для ускорения выполнения. Как мне избавиться от задержки, вызванной использованием /mt? Нажимая spaceили ENTERничего не делая.

Вот что используется:

robocopy "H:\LOS\DefaultCitrix\ChromeCitrix" "%userprofile%\Documents\ChromeCitrix" /e /w:1 /r:4 /mt:8

решение1

Обычно, когда что-то становится многопоточным, часть работы передается каждому потоку. Если приложение хочет показать прогресс, оно должно собрать статус из каждого потока и показать его вам. Чем больше деталей, тем сложнее процесс, и это не делает ничего хорошего для вас с точки зрения скорости, выполняя все эти межпоточные коммуникации.

В однопоточном приложении, наоборот, работа может быть просто выведена на консоль в любое время.

Проще говоря, потоки, вероятно, отчитываются перед пользовательским интерфейсом только тогда, когда завершают блок работы.

Связанный контент