Sobes.tech
Junior — Middle

Kaip nustatyti, kad visos vaikų gorutinos baigė savo vykdymą Go programoje?

sobes.tech AI

Atsakymas iš AI

Go kalboje dažniausiai naudojama sinchronizacija su sync.WaitGroup tipu, siekiant nustatyti visų vaikų gorutinių užbaigimą.

Pavyzdys:

var wg sync.WaitGroup

wg.Add(3) // laukiame 3 gorutinių

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done() // signalizuojame apie užbaigimą
        // gorutinos darbas
        fmt.Println("Gorutina", id, "baigta")
    }(i)
}

wg.Wait() // blokuojame, kol visos gorutinos nebus iškvietusios Done()
fmt.Println("Visos gorutinos baigtos")

Šiuo būdu, WaitGroup leidžia pagrindinei gorutinei laukti visų vaikų gorutinių užbaigimo.