Sobes.tech
Junior — Middle

Quali compiti risolve il pacchetto sync nel linguaggio di programmazione Go?

sobes.tech AI

Risposta dell'AI

Il pacchetto sync nel linguaggio Go fornisce primitive di sincronizzazione per gestire l'accesso concorrente alle risorse e coordinare le goroutine.

Le principali funzioni risolte dal pacchetto sync:

  • Mutex (Mutex) — per proteggere le sezioni critiche e prevenire accessi simultanei ai dati condivisi.
  • RWMutex — mutex con divisione tra lettura e scrittura, che permette a più goroutine di leggere i dati contemporaneamente, ma blocca la scrittura.
  • WaitGroup — per attendere che un gruppo di goroutine finisca.
  • Once — per eseguire un'inizializzazione una sola volta.

Esempio di utilizzo di Mutex:

var mu sync.Mutex
var counter int

func increment() {
    mu.Lock()
    defer mu.Unlock()
    counter++
}

In questo modo, il pacchetto sync aiuta a lavorare in modo sicuro con la concorrenza ed evitare condizioni di race.