Junior — Middle
Jak odbywa się koordynacja pracy wielu goroutines w Go?
sobes.tech AI
Odpowiedź od AI
W Go koordynacja pracy wielu gorutyn zwykle odbywa się za pomocą kanałów (channels) i pakietu sync.
- Kanały pozwalają gorutynom wymieniać dane i synchronizować wykonanie, blokując nadawcę lub odbiorcę do momentu gotowości.
- sync.WaitGroup służy do oczekiwania na zakończenie grupy gorutyn.
- Mutex i inne primitive z sync zapewniają bezpieczny dostęp do współdzielonych zasobów.
Przykład użycia kanału do synchronizacji:
ch := make(chan int)
func() {
// Wykonanie pracy
ch <- 1 // sygnał o zakończeniu
}()
<-ch // oczekiwanie na sygnał
W ten sposób kanały i primitive synchronizacyjne pozwalają efektywnie koordynować równoległe zadania.