Sobes.tech
Junior — Middle

Kako odrediti da su sve ćerke goroutine završile izvršavanje u programu na jeziku Go?

sobes.tech АИ

Одговор од АИ

U Go-u, za određivanje završetka svih dečjih gorutina, obično se koristi sinhronizacija pomoću tipa sync.WaitGroup.

Primer:

var wg sync.WaitGroup

wg.Add(3) // očekujemo 3 gorutine

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done() // signaliziramo završetak
        // rad gorutine
        fmt.Println("Gorutina", id, "završena")
    }(i)
}

wg.Wait() // blokira dok sve gorutine ne pozovu Done
fmt.Println("Sve gorutine su završene")

Na ovaj način, WaitGroup omogućava glavnoj gorutini da sačeka završetak svih dečjih gorutina.