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