Das Golang Errgroup -Paket wird verwendet, um Tools für die Synchronisation, Fehlerausbreitung und Kontext -Stornierung für eine Gruppe von Goroutinen bereitzustellen, die eine gemeinsame Aufgabe ausführen.
Schauen wir uns einen Blick auf die Verwendung des Errgroup -Pakets an.
Erforderliches Paket importieren
Um das Errgroup -Paket zu verwenden, müssen Sie es mit der Importklausel importieren. Der folgende Beispielcode zeigt, wie das Errgroup -Paket importiert wird.
Import "Golang.org/x/sync/ergroup "With Context -Funktion
Das Errgroup -Paket bietet uns die With -Context -Funktion. Die Funktion gibt eine neue Gruppe und den zugehörigen Kontext zurück.
Wenn die übergebene Funktion einen Nicht-0-Nil-Fehler oder die Wartezeit zurückgibt, wird der Kontext abgebrochen.
Gehen Sie Func
Die zweite Funktion, die durch das Errgroup -Paket bereitgestellt wird, ist die GO -Funktion. Diese Funktion ruft eine bestimmte Funktion auf eine neue Goroutine auf.
Wenn der erste Anruf einen Nilfehler zurückgibt, wird der Kontext abgebrochen.
Warten Sie Func
Die dritte Funktion ist die Wartefunktion. Diese Funktion wartet auf einen Block, bis die Funktion auf die GO -Methode aufgerufen wird. Gibt einen Wert zurück.
Beispiel
Lassen Sie uns sehen, wie wir das Errgroup -Paket verwenden können. Beginnen wir mit einer Reihe von Go -Routinen, die einfach einen Wert drucken.
Paket MainHier haben wir eine für Schleife, die einfach eine Reihe von Goroutinen ausführt und den aktuellen Wert in der Schleifenerteration druckt.
Wenn wir den obigen Code ausführen, stellen Sie fest, dass er nichts druckt. Dies liegt daran.
Wir können dies durch das Synchronisationspaket aus der Standardbibliothek lösen. Überprüfen Sie unser Tutorial über Golang Sync, um mehr zu erfahren.
https: // linuxHint.com/golang-sync/
Wir können den obigen Code mit WaitGroups wie unten gezeigt neu definieren:
Paket MainHier stellen wir "Parallelität" mit Kartellgruppen vor. Kurz gesagt, die Karteigruppe ist ein Zähler, mit dem wir die Hauptfunktion vom Verlassen beenden können, bis alle Goroutinen ausgeführt wurden.
Die Karteigruppe erstellt einen Zähler. Sobald eine Goroutine abgeschlossen ist, entfernen wir sie aus der Que. Sobald die Que 0 ist, entsperrt die Karteigruppe die Ausführung und kehrt zum Main zurück.
Beachten Sie die Funktion hinzufügen? Wir verwenden dies, um dem Wartegruppen -Que -Zähler einen Wert zu verleihen. Sobald die Ausführung abgeschlossen ist.
Verwenden von Errgroup
Im obigen Beispiel verarbeiten wir eine Gruppe von Goroutinen mithilfe des Sync -Pakets in Go. Es gibt jedoch keinen Mechanismus, um Fehler zu bewältigen. Obwohl es für ein einfaches Beispiel nicht erforderlich ist, wie oben gezeigt, ist es für viele Anwendungen wichtig.
Dafür können wir die Funktion Errgroup verwenden, mit der Fehler in einer Wartegruppe verarbeitet werden können. Schauen Sie sich das Beispiel unten an:
Paket MainIn diesem Beispiel stellen wir eine einfache Funktion vor, die eine zufällige Ganzzahl erzeugt. Wenn der Zufallswert gleich der Aufgabe ist, geben wir einen Fehler zurück.
Anschließend verwenden wir die Fehlergruppe, um die Fehler mithilfe der Gruppe zu behandeln und Funktionen zu gehen.
Schließen
In diesem Leitfaden wurden Wartgruppen eingeführt und mithilfe des Errgroup -Pakets mit Fehlern umgehen.