Le package Golang Errgroup est utilisé pour fournir des outils pour la synchronisation, la propagation des erreurs et l'annulation du contexte pour un groupe de goroutines qui effectuent une tâche commune.
Jetons un coup d'œil à un comment utiliser le package ErrGroup.
Importer le package requis
Pour utiliser le package ErrGroup, vous devez l'importer à l'aide de la clause d'importation. L'exemple de code ci-dessous montre comment importer le package ErrGroup.
Importer "Golang.org / x / sync / errgroup "Fonction avec Contexte
Le package ErrGroup nous fournit la fonction WithContext. La fonction renvoie un nouveau groupe et le contexte associé.
Si la fonction passée renvoie une erreur non 0-nil ou que l'attente revient, le contexte est annulé.
Aller func
La deuxième fonction fournie par le package ErrGroup est la fonction GO. Cette fonction appelle une fonction spécifiée à un nouveau goroutine.
Si le premier appel renvoie l'erreur non-NIL, cela annule le contexte.
Attendez le func
La troisième fonction est la fonction d'attente. Cette fonction attend un bloc jusqu'à ce que les appels de la fonction de la méthode GO renvoie une valeur.
Exemple
Voyons comment nous pouvons utiliser le package ErrGroup. Commençons par un ensemble de routines GO qui impriment simplement une valeur.
package principalIci, nous avons une boucle pour une boucle qui exécute simplement un tas de goroutines et imprime la valeur actuelle dans l'itération de la boucle.
Si nous exécutons le code ci-dessus, vous remarquez qu'il n'imprime rien. En effet.
Nous pouvons résoudre ceci en utilisant le package Sync à partir de la bibliothèque standard. Consultez notre tutoriel sur Golang Sync pour en savoir plus.
https: // linuxhint.com / golang-sync /
Nous pouvons redéfinir le code ci-dessus à l'aide de groupes d'attente comme indiqué ci-dessous:
package principalIci, nous introduisons la «concurrence» en utilisant des groupes d'attente. En un mot, le groupe d'attente est un compteur qui nous permet de bloquer la fonction principale de quitter jusqu'à ce que tous les Goroutines aient fini d'exécuter.
Le groupe d'attente fonctionne en créant un compteur qui maintient le nombre du nombre de goroutines dans le Que. Une fois un goroutine terminé, nous le supprimons du Que. Une fois que le Que est 0, le groupe d'attente débloque l'exécution et revient à Main.
Remarquez la fonction Ajouter? Nous l'utilisons pour ajouter une valeur au compteur de WaitGroup Que. Une fois l'exécution terminée, nous supprimons le goroutine terminé à l'aide de la méthode Done.
En utilisant ErrGroup
Dans l'exemple ci-dessus, nous traitons un groupe de Goroutines en utilisant le package de synchronisation dans Go. Cependant, il n'y a pas de mécanisme pour gérer les erreurs. Bien qu'il ne soit pas nécessaire pour un exemple simple comme illustré ci-dessus, il est important pour de nombreuses applications.
Pour cela, nous pouvons utiliser la fonction ErrGroup qui permet de gérer les erreurs dans un groupe d'attente. Jetez un œil à l'exemple ci-dessous:
package principalDans cet exemple, nous introduisons une fonction simple qui génère un entier aléatoire. Si la valeur aléatoire est égale à la tâche, nous renvoyons une erreur.
Nous utilisons ensuite le groupe d'erreur pour gérer les erreurs à l'aide du groupe et des fonctions GO.
Fermeture
Ce guide a couvert comment introduire et travailler avec des groupes d'attente et gérer les erreurs à l'aide du package ErrGroup.