Junior — Middle
Jak realizowana jest kontrola nad wykonaniem i synchronizacją goroutine w programie?
sobes.tech AI
Odpowiedź od AI
W Go kontrola wykonywania i synchronizacja goroutines zazwyczaj odbywa się za pomocą:
- WaitGroup z pakietu
sync— pozwala czekać na zakończenie grupy goroutines. - Kanałów (channels) — służą do przesyłania danych i sygnałów między goroutines, zapewniając synchronizację.
Przykład z WaitGroup:
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
// praca goroutine
}()
wg.Wait() // czekamy na zakończenie goroutine
Kanały pozwalają, na przykład, przesyłać wyniki lub sygnały zakończenia:
ch := make(chan int)
go func() {
ch <- 42 // wysłanie wartości
}()
wartość := <-ch // odbiór wartości, synchronizuje goroutines
Zatem, WaitGroup i kanały to główne narzędzia do kontroli i synchronizacji goroutines.