Sobes.tech
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.