Sobes.tech
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() // экиси да аяктагандан кийин күтөт

Бул параллелдик операцияларды координациялоо жана программаны эрте аяктоосун алдын алуу үчүн пайдалуу.