"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué la salida de mi Goroutine desaparece en Windows?

¿Por qué la salida de mi Goroutine desaparece en Windows?

Publicado el 2024-11-11
Navegar:243

Why Does My Goroutine Output Disappear on Windows?

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.

Último tutorial Más>

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