Sobes.tech
Junior

Jakie inne metody synchronizacji goroutines istnieją w Go oprócz kanałów?

sobes.tech AI

Odpowiedź od AI

Oprócz kanałów, w Go do synchronizacji gorutyn można używać:

  • sync.WaitGroup — pozwala czekać na zakończenie grupy gorutyn.
  • sync.Mutex — mutex do ochrony wspólnych zasobów przed równoczesnym dostępem.
  • sync.RWMutex — mutex z podziałem na odczyt i zapis.
  • sync.Cond — zmienna warunkowa do powiadamiania gorutyn o zdarzeniu.
  • Operacje atomowe z pakietu sync/atomic — do atomowych operacji na zmiennych bez blokad.

Przykład użycia WaitGroup:

var wg sync.WaitGroup
wg.Add(1)
go func() {
    defer wg.Done()
    // praca gorutyny
}()
wg.Wait() // czekamy na zakończenie wszystkich gorutyn