Maison  >  Article  >  développement back-end  >  Pourquoi ma sortie Goroutine disparaît-elle sous Windows ?

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

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-03 02:08:29779parcourir

Why Does My Goroutine Output Disappear on 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn