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.
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