Sobes.tech
Junior

Kā programmēšanas valodā (Go) noteikt, ka visi palaistie pavedieni ir pabeiguši darbu un vadības pavediens var izmantot rezultātus?

sobes.tech AI

Atbilde no AI

Go valodā parasti izmanto sync.WaitGroup tipu, lai uzraudzītu visu darbojošo gorutīnu pabeigšanu. Tas ļauj galvenajam pavedienam gaidīt, kamēr visas gorutīnas pabeigs savu izpildi.

Piemērs lietošanai:

var wg sync.WaitGroup

wg.Add(3) // gaidām 3 gorutīnas

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done() // signalizē par gorutīnas pabeigšanu
        // gorutīnas darbs
        fmt.Println("Gorutīna", id, "pabeigta")
    }(i)
}

wg.Wait() // galvenais pavedienu bloķē, līdz skaitītājs wg sasniedz 0
fmt.Println("Visas gorutīnas ir pabeigtas, rezultāti ir pieejami")

Šādā veidā WaitGroup ļauj sinhronizēt izpildi un nodrošina, ka vadības pavediens gaidīs visu paralēlo uzdevumu pabeigšanu.