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