Maison > Article > développement back-end > Pourquoi ma sortie Goroutine disparaît-elle sous Windows ?
Exécution de Goroutines sous Windows : dépannage d'une panne silencieuse
Un simple test impliquant des goroutines montre un comportement inattendu sous Windows, car le résultat attendu n'est pas produit . Le problème se pose 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 :
<code class="go">package main import ( "fmt" "time" ) func test() { fmt.Println("test") } func main() { go test() time.Sleep(10 * time.Second) }</code>
Sortie
Le code modifié produit désormais la sortie attendue :
test
Cette modification permet à la fonction principale d'attendre après le lancement de la goroutine, lui donnant suffisamment de temps pour exécuter et imprimer le message "test" avant la fin du programme.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!