Maison >développement back-end >Golang >Comment fermer la goroutine dans Golang
Golang est un langage de programmation très populaire présentant les caractéristiques d'efficacité, d'évolutivité et de fiabilité. Dans Golang, la goroutine est l'un des concepts très importants. Les Goroutines sont des threads légers qui permettent à plusieurs fonctions de s'exécuter simultanément dans le même processus. Lors de l'écriture de programmes Golang, la fermeture de goroutine est une question très importante. Cet article explique comment fermer goroutine.
Dans Golang, vous pouvez utiliser des canaux pour gérer les goroutines. Nous pouvons créer une variable de type booléen et l'inclure dans le canal. Dans goroutine, nous pouvons utiliser l'instruction select pour écouter la chaîne. Dès que le canal est fermé, la goroutine cessera de fonctionner.
Voici un exemple de code :
func worker(c <-chan bool) { for { select { case <-c: return default: // do some work } } } func main() { c := make(chan bool) go worker(c) // some other work close(c) }
Dans cet exemple de code, nous créons d'abord un canal c. Ensuite, nous utilisons le mot-clé go pour créer une goroutine qui appelle la fonction de travail et passe c comme paramètre. Dans la fonction principale, nous effectuons d'autres travaux et appelons enfin close(c) pour fermer la goroutine. Dans la fonction Worker, nous utilisons l'instruction select pour écouter le canal. Dès que le canal est fermé, la goroutine cessera de fonctionner.
Le package de contexte de Golang fournit un moyen élégant d'arrêter goroutine. Le contexte est un contexte annulable qui fournit des valeurs et des méthodes qui peuvent être transmises à la goroutine pour arrêter la goroutine. Une fois le contexte annulé, toutes les goroutines dérivées de ce contexte seront annulées.
Voici un exemple de code :
func worker(ctx context.Context) { for { select { case <-ctx.Done(): return default: // do some work } } } func main() { ctx, cancel := context.WithCancel(context.Background()) go worker(ctx) // some other work cancel() }
Dans cet exemple de code, nous créons d'abord un contexte d'annulation ctx et le convertissons en un contexte annulable à l'aide de la fonction context.WithCancel. Ensuite, nous utilisons le mot-clé go pour créer une goroutine qui appelle la fonction de travail et passe ctx en paramètre. Dans la fonction principale, nous effectuons d'autres travaux et enfin appelons la fonction Cancel() pour annuler la goroutine. Dans la fonction Worker, nous utilisons l'instruction select pour écouter le contexte. Une fois le contexte annulé, la goroutine cessera de fonctionner.
Résumé
Fermer la goroutine est une question très importante dans l'écriture de programmes Golang. Dans cet article, nous avons présenté deux façons de fermer goroutine, à savoir en utilisant des variables de type chan et bool et en utilisant le package de contexte. Avec une bonne gestion des goroutines, nous pouvons écrire des programmes Golang efficaces, évolutifs et fiables.
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!