Sobes.tech
Junior — Middle

Ar įgyvendinant savo programą naudojote waitgroup sinchronizacijos mechanizmą?

sobes.tech AI

Atsakymas iš AI

Taip, Go kalboje sync.WaitGroup mechanizmas dažnai naudojamas kelių gorutinių sinchronizavimui. Jis leidžia pagrindinei gorutinei laukti kelių paralelinių užduočių pabaigos.

Naudojimo 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 pabaigą
        fmt.Printf("Gorutina %d vykdoma\n", id)
        // tam tikras darbas
    }(i)
}

wg.Wait() // laukiame, kol visi Call'ai Done bus iškviesti
fmt.Println("Visos gorutinos baigtos")

Taip, WaitGroup padeda teisingai valdyti paralelizaciją ir užtikrina, kad programa nepradės anksčiau laiko.