Sobes.tech
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 аткарууну синхрондоштуруу жана көзөмөлдөө агымына бардык параллелдик тапшырмалардын аяктоо күтүлүп турушун камсыздайт.