"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi ma sortie Goroutine disparaît-elle sous Windows ?

Pourquoi ma sortie Goroutine disparaît-elle sous Windows ?

Publié le 2024-11-11
Parcourir:594

Why Does My Goroutine Output Disappear on Windows?

Exécution de goroutines sous Windows : dépannage d'une panne silencieuse

Un test simple impliquant des goroutines montre un comportement inattendu sous Windows, car le résultat attendu n'est pas produit . Le problème survient car la fonction principale n'attend pas la fin de la goroutine avant de se terminer.

Go attend

Lorsqu'une goroutine est lancée à l'aide du mot-clé "go", il s'exécute en même temps que la fonction principale. Cependant, l'exécution de la fonction principale ne s'arrête pas et n'attend pas la fin des goroutines invoquées. Par conséquent, la fonction principale se termine, laissant potentiellement la goroutine non planifiée.

Mesures correctives

Pour garantir que la goroutine a la possibilité d'exécuter et d'imprimer sa sortie, la fonction principale la fonction doit être modifiée pour attendre un certain temps. Ceci peut être réalisé en utilisant le package "time" et la fonction "Sleep". En introduisant un temps de veille, la fonction principale donne à la goroutine une chance de s'exécuter et de produire une sortie avant de se terminer.

Code modifié

Le code modifié suivant résout le problème en ajout d'un temps de sommeil de 10 secondes à la fin de la fonction principale :

package main

import (
    "fmt"
    "time"
)

func test() {
    fmt.Println("test")
}

func main() {
    go test()
    time.Sleep(10 * time.Second)
}

Output

Le code modifié produit désormais la sortie attendue :

test

Cette modification permet à la fonction principale d'attendre après avoir lancé la goroutine, en lui laissant suffisamment de temps pour exécuter et imprimer le message "test" avant la fin du programme.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3