Comment synchroniser plusieurs routines Go avec le contexte
Pour synchroniser plusieurs goroutines, leur permettant de se terminer lorsque l'une d'elles revient, le contexte fournit un solution efficace.
Explication :
L'exemple de code crée deux goroutines. Pour les synchroniser, un contexte.Context est initié et fourni aux deux goroutines. Chaque goroutine entre dans une boucle select {}, écoutant les messages du contexte.
Lorsqu'une erreur se produit ou qu'une condition spécifique est remplie :
Exemple de code :
package main import ( "context" "sync" ) func main() { ctx, cancel := context.WithCancel(context.Background()) wg := sync.WaitGroup{} wg.Add(3) go func() { defer wg.Done() for { select { // msg from other goroutine finish case <-ctx.Done(): // end } } }() go func() { defer wg.Done() for { select { // msg from other goroutine finish case <-ctx.Done(): // end } } }() go func() { defer wg.Done() // your operation // call cancel when this goroutine ends cancel() }() wg.Wait() }
Avantages de l'utilisation du contexte :
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!