Sobes.tech
Junior — Middle

Czy podczas realizacji swojego programu korzystałeś z mechanizmu synchronizacji waitgroup?

sobes.tech AI

Odpowiedź od AI

Tak, w Go mechanizm sync.WaitGroup jest często używany do synchronizacji wielu gorutyn. Pozwala głównej gorutynie czekać na zakończenie zestawu równoległych zadań.

Przykład użycia:

var wg sync.WaitGroup

wg.Add(3) // oczekujemy 3 gorutyn

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done() // sygnalizujemy zakończenie
        fmt.Printf("Gorutyna %d działa\n", id)
        // jakaś praca
    }(i)
}

wg.Wait() // czekamy, aż wszystkie wywołania Done zostaną wykonane
fmt.Println("Wszystkie gorutyny zakończone")

W ten sposób WaitGroup pomaga poprawnie zarządzać równoległością i gwarantuje, że program nie zakończy się wcześniej niż powinien.