Junior — Middle
Жоболоруңузда sync.WaitGroup жардамында синхрондоштуруу механизмин колдондуңузбу?
sobes.tech AI
AIден жооп
Ооба, Go долбоорлорунда көбүнчө sync.WaitGroup колдонулат. Бул механизм параллелдик тапшырмалар тобунун аяктоо убактысын күтүүгө мүмкүндүк берет.
Ишке ашыруу принциби:
WaitGroupобъектисин түзүү.- Ар бир горутинду баштардан мурун
Add(1)чакыруу, бул эсептегичти көбөйтөт. - Горутин ичинде иш аяктагандан кийин,
Done()чакыруу, бул эсептегичти азайтат. - Негизги горутин
Wait()чакырат, ал эсептегич нөлгө жеткенче токтоп турат.
Мисал:
var wg sync.WaitGroup
wg.Add(2) // 2 горутин күтүлүүдө
go func() {
defer wg.Done()
// биринчи горутиндин иши
}()
go func() {
defer wg.Done()
// экинчи горутиндин иши
}()
wg.Wait() // экиси да аяктагандан кийин күтөт
Бул параллелдик операцияларды координациялоо жана программаны эрте аяктоосун алдын алуу үчүн пайдалуу.