Ejecución de goroutines en Windows: solución de problemas de falla silenciosa
Una prueba simple que involucra goroutines muestra un comportamiento inesperado en Windows, ya que no se produce el resultado esperado . El problema surge porque la función principal no espera a que se complete la rutina antes de finalizar.
Go Awaits
Cuando se inicia una rutina usando la palabra clave "go", se ejecuta simultáneamente con la función principal. Sin embargo, la ejecución de la función principal no se detiene ni espera a que se completen las gorutinas invocadas. En consecuencia, la función principal se cierra, lo que puede dejar la rutina sin programar.
Medidas correctivas
Para garantizar que la rutina tenga la oportunidad de ejecutar e imprimir su salida, la rutina principal La función debe modificarse para esperar algún tiempo. Esto se puede lograr utilizando el paquete "time" y la función "Sleep". Al introducir un tiempo de suspensión, la función principal le da a la rutina la oportunidad de ejecutarse y producir resultados antes de finalizar.
Código modificado
El siguiente código modificado resuelve el problema al agregando un tiempo de sueño de 10 segundos al final de la función principal:
package main
import (
"fmt"
"time"
)
func test() {
fmt.Println("test")
}
func main() {
go test()
time.Sleep(10 * time.Second)
}
Salida
El código modificado ahora produce el resultado esperado:
test
Esta modificación permite que la función principal espere después de iniciar la rutina, dándole tiempo suficiente para ejecutar e imprimir el mensaje de "prueba" antes de que finalice el programa.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3