Junior
Ce alte metode de sincronizare a goroutine-urilor există în Go în afară de canale?
sobes.tech AI
Răspuns de la AI
Pe lângă canale, în Go, pentru sincronizarea gorutinelor, se pot folosi:
- sync.WaitGroup — permite așteptarea finalizării unui grup de gorutine.
- sync.Mutex — mutex pentru protejarea resurselor comune împotriva accesului simultan.
- sync.RWMutex — mutex cu separare între citire și scriere.
- sync.Cond — variabilă condițională pentru notificarea gorutinelor despre apariția unui eveniment.
- operații atomice din pachetul
sync/atomic— pentru operații atomice cu variabile fără blocări.
Exemplu de utilizare a WaitGroup:
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
// lucrarea goroutinei
}()
wg.Wait() // așteptăm finalizarea tuturor goroutinei