Junior — Middle
Ce funcții oferă structura WaitGroup în limbajul Go pentru sincronizarea goroutine-urilor?
sobes.tech AI
Răspuns de la AI
În limbajul Go, structura sync.WaitGroup este utilizată pentru a sincroniza mai multe goroutine-uri, permițând goroutine-ului principal să aștepte finalizarea celorlalte.
Metodele principale ale WaitGroup:
-
Add(delta int)— crește sau scade contorul goroutine-urilor așteptate. De obicei, este apelată înainte de a porni goroutine-urile. -
Done()— scade contorul cu 1, apelată la sfârșitul muncii goroutine-ului. -
Wait()— blochează execuția până când contorul ajunge la zero.
Exemplu de utilizare:
var wg sync.WaitGroup
wg.Add(3) // așteptăm 3 goroutine-uri
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // semnalăm finalizarea
fmt.Println("Goroutine", id)
}(i)
}
wg.Wait() // așteptăm finalizarea tuturor goroutine-urilor
fmt.Println("Toate goroutine-urile au fost finalizate")
Astfel, WaitGroup ajută la coordonarea execuției paralele și asigură că programul nu se va încheia mai devreme.