Junior — Middle
Czy podczas realizacji swojego programu korzystałeś z mechanizmu synchronizacji waitgroup?
sobes.tech AI
Odpowiedź od AI
Tak, w Go mechanizm sync.WaitGroup jest często używany do synchronizacji wielu gorutyn. Pozwala głównej gorutynie czekać na zakończenie zestawu równoległych zadań.
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
fmt.Printf("Gorutyna %d działa\n", id)
// jakaś praca
}(i)
}
wg.Wait() // czekamy, aż wszystkie wywołania Done zostaną wykonane
fmt.Println("Wszystkie gorutyny zakończone")
W ten sposób WaitGroup pomaga poprawnie zarządzać równoległością i gwarantuje, że program nie zakończy się wcześniej niż powinien.