¿Por qué el uso del modificador /mt en robocopy hace que se detenga antes de comenzar?

¿Por qué el uso del modificador /mt en robocopy hace que se detenga antes de comenzar?

Hoy aprendí que puedes usar el/montecambiar conrobocopiapara acelerar las transferencias de archivos. Probé algunas opciones diferentes para/monte:#, incluidos 1, 8, 17, 30 y 32. Descubrí que 8 (el valor predeterminado) parecía ser el más rápido por cualquier motivo.

Creo que/mt:1es lo mismo que no usar/monteen absoluto. Pero cuando no uso/monte, la transferencia de archivos comienza de inmediato y puedo ver el texto desplazándose instantáneamente. Si uso el modificador /mt, ya sea que coloque un número después o no, y sea cual sea el número que use si lo hago, se invocará robocopy y se mostrará la declaración de robocopy en el archivo por lotes durante unos 5 a 10 segundos y luego se ejecutará. (Ahí es cuando finalmente veo un texto que indica una transferencia de archivo).

Inicialmente pensé que podría ser que usar el modificador /mt significara que el archivo por lotes se bloquea durante unos segundos mientras espera algún servicio multiproceso o algo así. Pero probé /mt:1, que debería ser lo mismo que no usarlo, y se bloquea como cuando especifico cualquier otro número. La única vez que inicia la transferencia de archivos de inmediato es cuando el modificador /mt no se utiliza en absoluto.

Obviamente, estoy usando /mt para hacer que el script sea más rápido. Solo toma entre 20 y 30 segundos dependiendo de si se usa /mt y qué número uso, por lo que cada segundo cuenta para que esto vaya más rápido. ¿Cómo puedo deshacerme del retraso causado por el uso de /mt? Pulsando spaceo ENTERno hacer nada.

Esto es lo que se está utilizando:

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

Respuesta1

Generalmente, cuando algo se vuelve multiproceso, una parte del trabajo se entrega a cada subproceso. Si la aplicación quiere mostrar el progreso, debe recopilar el estado de cada hilo y mostrárselo. Cuanto más detallados sean los detalles, más complejo será el proceso, y realmente no le sirve de nada en términos de velocidad realizar toda esa comunicación entre subprocesos.

Por el contrario, en una aplicación de un solo subproceso, el trabajo se puede volcar a la consola en cualquier momento.

Para simplificar, los hilos probablemente solo informen a la interfaz de usuario cuando finalicen un bloque de trabajo.

información relacionada