Coordinating the Termination of Multiple Goroutines
When working with multiple goroutines in Golang, it's often necessary to synchronize their execution such that they terminate together . Une approche commune consiste à utiliser un canal pour signaler l'achèvement. Cependant, cette méthode peut conduire à une panique "Écrire à la chaîne fermée" si les Goroutines ne se terminent pas dans l'ordre attendu.
Utilisation de contextes pour la coordination de Goroutine
a a Une meilleure solution implique d'utiliser des contextes. Les contextes fournissent un mécanisme de communication et d'annulation entre les Goroutines. Voici comment vous pouvez implémenter ceci dans Go:
package main import ( "context" "sync" ) func main() { // Create a context and a function to cancel it ctx, cancel := context.WithCancel(context.Background()) // Initialize a wait group to track goroutine completion wg := sync.WaitGroup{} wg.Add(3) // Add 3 goroutines to the wait group // Launch three goroutines // Each goroutine listens for the context to be done go func() { defer wg.Done() for { select { caseDans cet exemple, lorsque le troisième Goroutine termine ses opérations, il annule le contexte. Cela propage l'annulation des autres Goroutines, ce qui les a également terminés. En utilisant des contextes, nous éliminons le potentiel de panique et nous assurons que tous les Goroutines coordonnent efficacement leur terminaison.
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