Sobes.tech
Junior — Middle

Hogyan lehet meghatározni, hogy minden gyermek goroutine befejeződött-e egy Go programban?

sobes.tech MI

Válasz az MI-től

Go-ban általában a sync.WaitGroup típus segítségével szinkronizálással határozzuk meg az összes gyermek goroutine befejezését.

Példa:

var wg sync.WaitGroup

wg.Add(3) // 3 goroutine várása

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done() // befejezés jelzése
        // goroutine munkája
        fmt.Println("Goroutine", id, "befejeződött")
    }(i)
}

wg.Wait() // blokkol, amíg minden goroutine meghívja a Done-t
fmt.Println("Minden goroutine befejeződött")

Így a WaitGroup lehetővé teszi, hogy a fő goroutine várjon minden gyermek goroutine befejezésére.