robocopy에서 /mt 스위치를 사용하면 시작하기 전에 일시 중지되는 이유는 무엇입니까?

robocopy에서 /mt 스위치를 사용하면 시작하기 전에 일시 중지되는 이유는 무엇입니까?

오늘은 다음과 같은 기능을 사용할 수 있다는 것을 배웠습니다./산스위치로 바꾸다로보카피파일 전송 속도를 높이기 위해. 나는 몇 가지 다른 옵션을 시도했습니다./산:#, 1, 8, 17, 30 및 32를 포함합니다. 어떤 이유로든 8(기본값)이 가장 빠른 것으로 나타났습니다.

나는 그것을 믿는다/mt:1사용하지 않는 것과 동일합니다/산조금도. 하지만 사용하지 않을 때는/산, 파일 전송이 즉시 시작되고 텍스트가 즉시 스크롤되는 것을 볼 수 있습니다. /mt 스위치를 사용하면 그 뒤에 숫자를 넣든 말든, 어떤 숫자를 사용하든 robocopy가 호출되고 배치 파일에 robocopy 문을 5~10초 동안 표시한 다음 실행됩니다. (그때 마침내 파일 전송을 나타내는 텍스트가 표시됩니다.)

처음에는 /mt 스위치를 사용하면 다중 스레드 서비스 등을 기다리는 동안 배치 파일이 몇 초 동안 정지될 수 있다고 생각했습니다. 그런데 /mt:1을 시도해 보니 사용하지 않는 것과 똑같아야 하고 다른 번호를 지정할 때와 마찬가지로 작동이 멈춥니다. 파일 전송이 즉시 시작되는 유일한 때는 /mt 스위치가 전혀 사용되지 않을 때입니다.

분명히 스크립트 속도를 높이기 위해 /mt를 사용하고 있습니다. /mt 사용 여부와 사용하는 숫자에 따라 약 20-30초 밖에 걸리지 않으므로 이 작업을 더 빠르게 진행하는 데 매초가 중요합니다. /mt를 사용하여 발생한 지연을 어떻게 제거할 수 있나요? 누르 space거나 ENTER아무것도 하지 않습니다.

사용되는 내용은 다음과 같습니다.

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

답변1

일반적으로 다중 스레드가 발생하면 작업의 일부가 각 스레드에 전달됩니다. 앱이 진행 상황을 표시하려면 각 스레드에서 상태를 수집하여 사용자에게 표시해야 합니다. 세부 사항이 더 세밀해질수록 프로세스는 더 복잡해지고 모든 스레드 간 통신을 수행하는 것은 속도 측면에서 실제로 좋은 점은 없습니다.

반대로 단일 스레드 애플리케이션에서는 언제든지 작업을 콘솔에 덤프할 수 있습니다.

간단하게 유지하기 위해 스레드는 작업 블록을 완료할 때만 사용자 인터페이스에 다시 보고할 것입니다.

관련 정보