Sobes.tech
Junior — Middle

Kā noteikt, ka visas bērnu goroutines ir pabeigušas izpildi Go programmā?

sobes.tech AI

Atbilde no AI

Go valodā parasti tiek izmantota sinhronizācija ar sync.WaitGroup tipu, lai noteiktu visu bērnu gorutīnu pabeigšanu.

Piemērs:

var wg sync.WaitGroup

wg.Add(3) // gaidām 3 gorutinas

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done() // signāls par pabeigšanu
        // gorutinas darbs
        fmt.Println("Gorutina", id, "pabeigta")
    }(i)
}

wg.Wait() // bloķējas, kamēr visas gorutinas neizsauks Done()
fmt.Println("Visas gorutinas ir pabeigtas")

Šādā veidā WaitGroup ļauj galvenajai gorutinei gaidīt visu bērnu gorutīnu pabeigšanu.