Junior — Middle
Kaip nustatyti, kad visos vaikų gorutinos baigė savo vykdymą Go programoje?
sobes.tech AI
Atsakymas iš AI
Go kalboje dažniausiai naudojama sinchronizacija su sync.WaitGroup tipu, siekiant nustatyti visų vaikų gorutinių užbaigimą.
Pavyzdys:
var wg sync.WaitGroup
wg.Add(3) // laukiame 3 gorutinių
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // signalizuojame apie užbaigimą
// gorutinos darbas
fmt.Println("Gorutina", id, "baigta")
}(i)
}
wg.Wait() // blokuojame, kol visos gorutinos nebus iškvietusios Done()
fmt.Println("Visos gorutinos baigtos")
Šiuo būdu, WaitGroup leidžia pagrindinei gorutinei laukti visų vaikų gorutinių užbaigimo.