Pakiet Golang Ergroup służy do dostarczania narzędzi do synchronizacji, propagacji błędów i anulowania kontekstu dla grupy goroutin, które wykonują wspólne zadanie.
Spójrzmy na sposób korzystania z pakietu Ergroup.
Importuj wymagany pakiet
Aby użyć pakietu Ergroup, musisz go zaimportować za pomocą klauzuli importu. Poniższy przykładowy przykład pokazuje, jak zaimportować pakiet Ergroup.
Importuj „Golang.org/x/sync/errgroup "Z funkcją kontexta
Pakiet Errgroup zapewnia nam funkcję z kontext. Funkcja zwraca nową grupę i powiązany kontekst.
Jeśli przekazana funkcja zwraca błąd bez 0-zerowy lub zwraca się, kontekst zostaje anulowany.
Go Func
Druga funkcja dostarczona przez pakiet Ergroup to funkcja Go. Ta funkcja wywołuje określoną funkcję do nowej goroutiny.
Jeśli pierwsze połączenie zwraca błąd niezwiązany z NIL, anuluje kontekst.
Poczekaj FUNC
Trzecia funkcja to funkcja oczekiwania. Ta funkcja czeka blok, aż funkcja wywołana z metody Go zwróci wartość.
Przykład
Zobaczmy, jak możemy użyć pakietu Ergroup. Zacznijmy od zestawu procedur, które po prostu drukują wartość.
Pakiet MainTutaj mamy pętlę, która po prostu uruchamia garść goroutinów i drukuje bieżącą wartość w iteracji pętli.
Jeśli uruchomimy powyższy kod, zauważysz, że tak naprawdę niczego nie drukuje. Wynika to z faktu, że Goroutiny znajdują się wewnątrz głównej funkcji, a gdy główna funkcja się skończy, Go zakończy cały program, niezależnie od tego, czy Goroutines zakończyła.
Możemy to rozwiązać za pomocą pakietu synchronizacji ze standardowej biblioteki. Sprawdź nasz samouczek na temat Golang Sync, aby dowiedzieć się więcej.
https: // linuxhint.com/golang-sync/
Możemy na nowo zdefiniować powyższy kod za pomocą Waitgroups, jak pokazano poniżej:
Pakiet MainTutaj wprowadzamy „współbieżność” za pomocą grup oczekujących. Krótko mówiąc, grupa oczekująca to licznik, który pozwala nam zablokować funkcję główną przed wychodzeniem.
Grupa Waitgroup działa, tworząc licznik, który utrzymuje pod koniec liczby Goroutines w Que. Po zakończeniu Goroutine usuwamy ją z Que. Gdy Que wynosi 0, grupa Waitglock odbierze wykonanie i wraca do Main.
Zwróć uwagę na funkcję dodawania? Używamy tego, aby dodać wartość do licznika Que Waitgroup. Po zakończeniu wykonywania usuwamy ukończoną goroutinę za pomocą metody gotowej.
Za pomocą Errgroup
W powyższym przykładzie przetwarzamy grupę gorutin za pomocą pakietu synchronizacji w Go. Jednak nie ma mechanizmu do obsługi jakichkolwiek błędów. Chociaż nie jest to konieczne dla prostego przykładu, jak pokazano powyżej, jest to ważne dla wielu aplikacji.
W tym celu możemy użyć funkcji Errgroup, która pozwala obsłużyć błędy w grupie oczekiwania. Spójrz na poniższy przykład:
Pakiet MainW tym przykładzie wprowadzamy prostą funkcję, która generuje losową liczbę całkowitą. Jeśli wartość losowa jest równa zadaniu, zwracamy błąd.
Następnie używamy grupy błędów do obsługi błędów za pomocą funkcji grupy .
Zamknięcie
Ten przewodnik obejmował sposób wprowadzania i pracy z grupami Waitgroups i obsługą błędów za pomocą pakietu Ergroup.