Junior — Middle
Vai esat izmantojis sinhronizācijas mehānismu ar sync.WaitGroup savos projektos?
sobes.tech AI
Atbilde no AI
Jā, Go projektos bieži izmanto sync.WaitGroup, lai sinhronizētu gorutinas. Šis mehānisms ļauj gaidīt, līdz paraugu paralēlo uzdevumu grupa tiks pabeigta, pirms turpināt.
Darbības princips:
- Tiek izveidots
WaitGroupobjekts. - Pirms katras gorutinas palaišanas tiek izsaukts
Add(1), lai palielinātu skaitītāju. - Gorutinas iekšienē, pēc darba pabeigšanas, tiek izsaukts
Done(), kas samazina skaitītāju. - Galvenā gorutina izsauc
Wait(), kas bloķējas, līdz skaitītājs sasniedz nulli.
Piemērs:
var wg sync.WaitGroup
wg.Add(2) // gaidām 2 gorutinas
go func() {
defer wg.Done()
// pirmās gorutinas darbs
}()
go func() {
defer wg.Done()
// otras gorutinas darbs
}()
wg.Wait() // gaidām, līdz abas pabeigs
Tas ir noderīgi paralēlo operāciju koordinēšanai un programmas priekšlaicīgas pabeigšanas novēršanai.