Junior — Middle
Jak można określić, że wszystkie podrzędne goroutines zakończyły wykonanie w programie na języku Go?
sobes.tech AI
Odpowiedź od AI
W Go, aby określić zakończenie wszystkich podrzędnych gorutyn, zwykle używa się synchronizacji za pomocą typu sync.WaitGroup.
Przykład:
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
// praca gorutyny
fmt.Println("Gorutyna", id, "zakończona")
}(i)
}
wg.Wait() // blokuje się, dopóki wszystkie gorutyny nie wywołają Done
fmt.Println("Wszystkie gorutyny zakończone")
W ten sposób WaitGroup pozwala głównej gorutynie czekać na zakończenie wszystkich podrzędnych.