Middle+
Opowiedz mi o WaitGroup w Go.
sobes.tech AI
Odpowiedź od AI
W Go sync.WaitGroup służy do oczekiwania na zakończenie grupy goroutine. To wygodny sposób synchronizacji zadań równoległych.
Główne metody:
Add(int)— zwiększa licznik oczekujących goroutine.Done()— zmniejsza licznik, wywoływany gdy goroutine się kończy.Wait()— blokuje wykonanie do momentu, aż licznik nie osiągnie zera.
Przykład użycia:
var wg sync.WaitGroup
wg.Add(2) // oczekujemy 2 goroutine
go func() {
defer wg.Done()
// praca pierwszej goroutine
}()
go func() {
defer wg.Done()
// praca drugiej goroutine
}()
wg.Wait() // czekamy na zakończenie obu
W ten sposób WaitGroup pomaga kontrolować zakończenie operacji równoległych.