Sobes.tech
Junior — Middle

Quali tecniche di utilizzo di blocchi o altri meccanismi per prevenire l'accesso simultaneo ai dati conosci?

sobes.tech AI

Risposta dell'AI

Tecniche principali per prevenire l'accesso simultaneo ai dati in Go:

  • Mutex (sync.Mutex): blocco della sezione critica in modo che un solo thread possa lavorare con i dati.
var mu sync.Mutex
mu.Lock()
// lavoro con dati condivisi
mu.Unlock()
  • RWMutex (sync.RWMutex): permette a più lettori di leggere i dati contemporaneamente, ma blocca la scrittura.

  • Canali (channels): trasmissione di dati tra goroutine, evitando l'accesso diretto ai dati condivisi.

  • Operazioni atomiche (sync/atomic): per operazioni semplici con variabili senza blocco completo.

  • sync.Once: per l'inizializzazione unica dei dati.

La scelta del meccanismo dipende dal compito: per esclusione mutua semplice — Mutex, per separare lettura e scrittura — RWMutex, per trasmissione di messaggi — canali.