Junior — Middle
Vai jūs varat izskaidrot, kā darbojas gaidīšanas mehānisms, kas gaida vairākas gorutīnas Go valodā, izmantojot WaitGroup?
sobes.tech AI
Atbilde no AI
Go valodā, lai gaidītu vairākas gorutīnas pabeigšanu, tiek izmantots sync.WaitGroup tips. Tas ļauj "pierakstīties" uz vairākām gorutīnām un bloķēt izpildi līdz brīdim, kad visas tās pabeigsies.
Galvenās WaitGroup metodes:
- Add(n int) — palielina skaitītāju par n, parasti izsauc pirms gorutīnu palaišanas.
- Done() — samazina skaitītāju par 1, izsauc katras gorutīnas beigās.
- Wait() — bloķē izpildi līdz skaitītājs sasniedz 0.
Piemērs lietošanai:
var wg sync.WaitGroup
wg.Add(3) // gaidām 3 gorutīnas
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // signāls par pabeigšanu
fmt.Printf("Gorutina %d darbojas\n", id)
// kāds darbs
}(i)
}
wg.Wait() // gaidām, līdz visas gorutīnas pabeigsies
fmt.Println("Visas gorutīnas ir pabeigtas")