Sobes.tech
Junior

Kako u programskom jeziku (Go) pratiti da su svi pokrenuti tokovi završili i da glavni tok može koristiti rezultate?

sobes.tech АИ

Одговор од АИ

U Go-u, za praćenje završetka svih pokrenutih gorutina, obično se koristi tip sync.WaitGroup. On omogućava glavnom thread-u da čeka dok sve gorutine ne završe izvršavanje.

Primer upotrebe:

var wg sync.WaitGroup

wg.Add(3) // čekamo 3 gorutine

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

wg.Wait() // glavni thread se blokira dok se brojač wg ne smanji na 0
fmt.Println("Sve gorutine su završene, rezultati se mogu koristiti")

Na ovaj način, WaitGroup omogućava sinhronizaciju izvršavanja i garantuje da će kontrolni thread čekati završetak svih paralelnih zadataka.