Comprendre l'exécution de Goroutine : pourquoi ma Goroutine est restée inactive
Dans votre code Go, vous avez cherché à expérimenter des goroutines et des canaux. Le but était de créer une goroutine qui lit en continu à partir d'un canal, mais le message attendu "Entrer dans la goroutine..." n'est jamais apparu. Cet article explore les raisons de ce comportement.
Le code que vous avez fourni inclut une goroutine créée comme suit :
go func(m *chan string) { fmt.Println("Entering the goroutine...") for { fmt.Println(<- *m) } }(&messages)
Bien que la goroutine soit lancée, elle se termine rapidement car le programme principal se termine immédiatement après avoir imprimé "Terminé!". Les Goroutines s'exécutent en même temps que le programme principal ; cependant, ils se termineront à la fin du programme principal.
Pour éviter que la goroutine ne se termine prématurément, vous devez trouver un moyen de maintenir le programme principal en cours d'exécution pendant l'exécution de la goroutine. Ceci peut être réalisé en employant un canal distinct qui attend un nombre spécifique de messages, en utilisant un sync.WaitGroup ou en mettant en œuvre d'autres techniques.
Le blog Go propose un guide complet sur la concurrence (https://blog .golang.org/go-proverbs) qui fournit des informations précieuses sur le fonctionnement de la concurrence dans Go.
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!