Junior — Middle
Ar įgyvendinant savo programą naudojote waitgroup sinchronizacijos mechanizmą?
sobes.tech AI
Atsakymas iš AI
Taip, Go kalboje sync.WaitGroup mechanizmas dažnai naudojamas kelių gorutinių sinchronizavimui. Jis leidžia pagrindinei gorutinei laukti kelių paralelinių užduočių pabaigos.
Naudojimo 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 pabaigą
fmt.Printf("Gorutina %d vykdoma\n", id)
// tam tikras darbas
}(i)
}
wg.Wait() // laukiame, kol visi Call'ai Done bus iškviesti
fmt.Println("Visos gorutinos baigtos")
Taip, WaitGroup padeda teisingai valdyti paralelizaciją ir užtikrina, kad programa nepradės anksčiau laiko.