Junior
Kaip programavimo kalboje (Go) nustatyti, kad visi vykdomi srautai baigėsi ir valdymo srautas gali naudotis rezultatais?
sobes.tech AI
Atsakymas iš AI
Go kalboje dažniausiai naudojamas sync.WaitGroup tipas, norint stebėti visų vykstančių gorutinių užbaigimą. Tai leidžia pagrindiniam srautui laukti, kol visi gorutinai užbaigs savo vykdymą.
Naudojimo pavyzdys:
var wg sync.WaitGroup
wg.Add(3) // laukiame 3 gorutinų
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // signalizuoja apie gorutinos pabaigą
// gorutinos darbas
fmt.Println("Gorutina", id, "baigta")
}(i)
}
wg.Wait() // pagrindinis srautas blokuojasi, kol wg skaitiklis pasiekia 0
fmt.Println("Visos gorutinos baigtos, rezultatus galima naudoti")
Šiuo būdu WaitGroup leidžia sinchronizuoti vykdymą ir garantuoja, kad valdymo srautas lauks visų paralelinių užduočių pabaigos.