Warum führt die Verwendung des Schalters /mt in Robocopy zu einer Pause vor dem Start?

Warum führt die Verwendung des Schalters /mt in Robocopy zu einer Pause vor dem Start?

Heute habe ich gelernt, dass man mit dem/mtSchalter mitRobokopieum Dateiübertragungen zu beschleunigen. Ich habe ein paar verschiedene Optionen ausprobiert für/mt:#, darunter 1, 8, 17, 30 und 32. Aus irgendeinem Grund schien mir 8 (die Standardeinstellung) am schnellsten zu sein.

Ich glaube das/mt:1ist das gleiche wie nicht zu verwenden/mtüberhaupt. Aber wenn ich nicht benutze/mt, beginnt die Dateiübertragung sofort und ich kann sofort Text vorbeiscrollen sehen. Wenn ich den Schalter /mt verwende, egal ob ich eine Zahl dahinter setze oder nicht und welche Zahl ich auch verwende, wird Robocopy aufgerufen und zeigt die Robocopy-Anweisung in der Batchdatei für etwa 5-10 Sekunden an und wird dann ausgeführt (dann sehe ich endlich Text vorbeiscrollen, der auf eine Dateiübertragung hinweist).

Ich dachte zunächst, dass die Batchdatei bei Verwendung des Schalters /mt für einige Sekunden hängen bleibt, während auf einen Multithread-Dienst oder etwas Ähnliches gewartet wird. Aber ich habe /mt:1 ausprobiert, was dasselbe sein sollte wie wenn ich es nicht verwende, und es hängt genauso, wie wenn ich eine andere Zahl angebe. Die Dateiübertragung wird nur dann sofort gestartet, wenn der Schalter /mt überhaupt nicht verwendet wird.

Offensichtlich verwende ich /mt, damit das Skript schneller läuft. Es dauert nur etwa 20 bis 30 Sekunden, je nachdem, ob /mt verwendet wird und welche Zahl ich verwende. Jede Sekunde zählt also, um es schneller zu machen. Wie kann ich die Verzögerung beseitigen, die durch die Verwendung von /mt verursacht wird? Durch Drücken von spaceoder ENTERwird nichts getan.

Folgendes wird verwendet:

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

Antwort1

Wenn etwas multithreaded wird, wird im Allgemeinen ein Teil der Aufgabe an jeden Thread übergeben. Wenn die App den Fortschritt anzeigen möchte, muss sie den Status von jedem Thread erfassen und Ihnen anzeigen. Je feinkörniger die Details, desto komplexer der Prozess, und es bringt Ihnen in Bezug auf die Geschwindigkeit nicht wirklich etwas, die ganze Interthread-Kommunikation durchzuführen.

In einer Single-Thread-Anwendung hingegen kann die Arbeit jederzeit einfach auf die Konsole übertragen werden.

Der Einfachheit halber melden die Threads der Benutzeroberfläche wahrscheinlich nur dann etwas zurück, wenn sie einen Arbeitsblock abgeschlossen haben.

verwandte Informationen