Junior — Middle
Cum se poate determina că toate goroutinele copil au terminat execuția într-un program Go?
sobes.tech AI
Răspuns de la AI
În Go, pentru a determina finalizarea tuturor goroutine-urilor copil, se folosește de obicei sincronizarea cu tipul sync.WaitGroup.
Exemplu:
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
// lucrarea goroutine-ului
fmt.Println("Goroutine", id, "finalizată")
}(i)
}
wg.Wait() // blocăm până când toate goroutine-urile vor apela Done
fmt.Println("Toate goroutine-urile au fost finalizate")
Astfel, WaitGroup permite goroutine-ului principal să aștepte finalizarea tuturor goroutine-urilor copil.