為什麼在 robocopy 中使用 /mt 開關會導致它在開始之前暫停?

為什麼在 robocopy 中使用 /mt 開關會導致它在開始之前暫停?

今天,我了解到您可以使用/公噸切換與機器人複製使文件傳輸更快。我嘗試了幾種不同的選擇/公噸:#,包括 1、8、17、30 和 32。

我相信/噸:1與不使用相同/公噸根本不。但當我不使用時/公噸,文件傳輸立即開始,我可以看到文字立即滾動。如果我使用 /mt 開關,無論我是否在其後面添加一個數字,無論我使用什麼數字,robocopy 都會被調用,並在批處理文件中顯示 robocopy 語句大約 5-10 秒,然後執行(就在那時,我終於看到了表明文件傳輸的文字)。

我最初認為使用 /mt 開關可能意味著批次檔在等待某些多執行緒服務或其他服務時掛起幾秒鐘。但我嘗試了 /mt:1,這應該與不使用它相同,並且它就像我指定任何其他數字時一樣掛起。它立即開始文件傳輸的唯一時間是根本不使用 /mt 開關時。

顯然,我使用 /mt 來使腳本運行得更快。這只需要大約 20-30 秒,這取決於是否使用 /mt 以及我使用的數字,因此每一秒都很重要,可以加快速度。如何消除使用 /mt 造成的延遲?按下spaceENTER不執行任何操作。

這是正在使用的:

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

答案1

一般來說,當某件事變得多執行緒時,一部分工作會交給每個執行緒。如果應用程式想要顯示進度,它必須收集每個執行緒的狀態並將其顯示給您。細節越細粒度,過程就越複雜,而且在速度方面,進行所有執行緒間通訊並沒有真正為您帶來任何好處。

相反,在單執行緒應用程式中,工作可以隨時轉儲到控制台。

為了簡單起見,執行緒可能只在完成一個工作區塊時才向使用者介面報告。

相關內容