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.