Sobes.tech
Junior — Middle

Kas te implementatsiooni ajal kasutasite waitgroup sünkroniseerimismehhanismi?

sobes.tech AI

Vastus AI-lt

Jah, Go keeles sync.WaitGroup-mehhanismit kasutatakse sageli mitme goroutine'i sünkroniseerimiseks. See võimaldab peamisel goroutine'il oodata paralleelsete ülesannete lõpetamist.

Kasutusnäide:

var wg sync.WaitGroup

wg.Add(3) // ootame 3 goroutine'i

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done() // signaal lõpetamisest
        fmt.Printf("Goroutine %d töötab\n", id)
        // mingi töö
    }(i)
}

wg.Wait() // ootame, kuni kõik Done kutsed on tehtud
fmt.Println("Kõik goroutine'id on lõpetatud")

Nii aitab WaitGroup õigesti hallata paralleelsust ja tagab, et programm ei lõpe enne tähtaega.