Junior
Программалоо тилинде (Go) бардык ишке киргизилген агымдар бүттү деп кантип байкап, негизги агым натыйжаларды колдоно алат?
sobes.tech AI
AIден жооп
Go тилинде, иштеп жаткан бардык goroutine'лердин аяктоо процессин көзөмөлдөө үчүн, адатта, sync.WaitGroup тиби колдонулат. Бул негизги агымды күтүүгө мүмкүндүк берет, бардык goroutine'лер аяктагандан кийин.
Колдонуу мисалы:
var wg sync.WaitGroup
wg.Add(3) // 3 goroutine күтүлүүдө
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // goroutine аяктагандан кийин сигнал берет
// goroutine иши
fmt.Println("Goroutine", id, "аяктады")
}(i)
}
wg.Wait() // негизги агым күтөт, wg саноочу 0 болуп калганда
fmt.Println("Бардык goroutine'лер аяктады, натыйжалар колдонулушу мүмкүн")
Мындайча айтканда, WaitGroup аткарууну синхрондоштуруу жана көзөмөлдөө агымына бардык параллелдик тапшырмалардын аяктоо күтүлүп турушун камсыздайт.