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