Senior
Dlaczego potrzebujemy WaitGroup w tym zadaniu?
sobes.tech AI
Odpowiedź od AI
WaitGroup w Go jest używany do synchronizacji gorutyn. W zadaniach, w których uruchamianych jest wiele gorutyn, WaitGroup pozwala głównemu wątkowi oczekiwać na zakończenie wszystkich uruchomionych gorutyn przed kontynuowaniem wykonania. Zapobiega to przedwczesnemu wyjściu z programu lub przejściu do następnego etapu, gdy operacje w tle jeszcze się nie zakończyły.
Przykład użycia:
var wg sync.WaitGroup
wg.Add(3) // oczekujemy 3 gorutyn
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // sygnalizujemy zakończenie
// praca gorutyny
fmt.Println("Gorutyna", id, "zakończona")
}(i)
}
wg.Wait() // czekamy na zakończenie wszystkich gorutyn
fmt.Println("Wszystkie gorutyny zakończone")
W ten sposób WaitGroup zapewnia poprawną koordynację i zapobiega wyścigom lub przedwczesnemu zakończeniu programu.