Sobes.tech
Junior — Middle

Kādas funkcijas nodrošina struktūra WaitGroup Go valodā gorutīnu sinhronizācijai?

sobes.tech AI

Atbilde no AI

Go valodā struktūra sync.WaitGroup tiek izmantota vairāku gorutīnu sinhronizācijai, ļaujot galvenajai gorutīnai gaidīt citu pabeigšanu.

Galvenās WaitGroup metodes:

  • Add(delta int) — palielina vai samazina gaidāmo gorutīnu skaitu. Parasti tiek izsaukta pirms gorutīnu palaišanas.

  • Done() — samazina skaitītāju par 1, tiek izsaukta gorutīnas darba beigās.

  • Wait() — bloķē izpildi līdz skaitītājs sasniedz nulli.

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() // signalizē par pabeigšanu
        fmt.Println("Gorutina", id)
    }(i)
}

wg.Wait() // gaidām, līdz visas gorutinas pabeidz darbu
fmt.Println("Visas gorutinas ir pabeigtas")

Tādējādi, WaitGroup palīdz koordinēt paralēlo izpildi un nodrošina, ka programma nebeigsies pārāk agri.