Junior
Kako u programskom jeziku (Go) pratiti da su svi pokrenuti tokovi završili i da glavni tok može koristiti rezultate?
sobes.tech АИ
Одговор од АИ
U Go-u, za praćenje završetka svih pokrenutih gorutina, obično se koristi tip sync.WaitGroup. On omogućava glavnom thread-u da čeka dok sve gorutine ne završe izvršavanje.
Primer upotrebe:
var wg sync.WaitGroup
wg.Add(3) // čekamo 3 gorutine
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // signalizira završetak gorutine
// rad gorutine
fmt.Println("Gorutina", id, "završena")
}(i)
}
wg.Wait() // glavni thread se blokira dok se brojač wg ne smanji na 0
fmt.Println("Sve gorutine su završene, rezultati se mogu koristiti")
Na ovaj način, WaitGroup omogućava sinhronizaciju izvršavanja i garantuje da će kontrolni thread čekati završetak svih paralelnih zadataka.