Sobes.tech
Junior — Middle

Программаңызды ишке ашырууда waitgroup синхрондоштуруу механизмин колдондуңузбу?

sobes.tech AI

AIден жооп

Ооба, Go тилинде sync.WaitGroup механизми көп учурда бир нече goroutine'лердин синхрондоштуруу үчүн колдонулат. Ал негизги goroutine'ге параллелдик тапшырмалардын бүтүшүн күтүүгө мүмкүндүк берет.

Колдонуу мисалы:

var wg sync.WaitGroup

wg.Add(3) // 3 goroutine күтүлүүдө

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done() // аяктоо белгиси
        fmt.Printf("Goroutine %d иштеп жатат\n", id)
        // кандайдыр бир иш
    }(i)
}

wg.Wait() // бардык Done чакыруулары аткарылгандан кийин күтүү
fmt.Println("Бардык goroutine аяктады")

Мындайча айтканда, WaitGroup туура параллелизмди башкарууга жардам берет жана программа эрте бүтпөстөн иштейт.