Sobes.tech
Junior — Middle

Vai, īstenojot savu programmu, izmantojāt waitgroup sinhronizācijas mehānismu?

sobes.tech AI

Atbilde no AI

Jā, Go valodā sync.WaitGroup mehānisms bieži tiek izmantots vairāku gorutīnu sinhronizācijai. Tas ļauj galvenajai gorutīnai gaidīt paralēlo uzdevumu pabeigšanu.

Piemērs lietošanai:

var wg sync.WaitGroup

wg.Add(3) // gaidām 3 gorutinas

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done() // signāls par pabeigšanu
        fmt.Printf("Gorutina %d darbojas\n", id)
        // kāds darbs
    }(i)
}

wg.Wait() // gaidām, līdz visi Done izsaukumi ir pabeigti
fmt.Println("Visas gorutinas ir pabeigtas")

Tādējādi, WaitGroup palīdz pareizi pārvaldīt paralēlismu un nodrošina, ka programma nebeigsies agrāk nekā vajadzētu.