Junior — Middle
Poți explica ce este o excludere mutuală (Mutex) și cum funcționează?
sobes.tech AI
Răspuns de la AI
Excluderea mutuală (Mutex) este un mecanism de sincronizare care garantează că, într-un moment dat, doar o gorutină (fir de execuție) poate accesa o resursă sau o secțiune critică a codului.
În Go, pentru aceasta se folosește tipul sync.Mutex. Când o gorutină apelează Lock(), blochează mutex-ul, iar alte gorutine care încearcă să apeleze Lock() vor aștepta până când mutex-ul este deblocat prin Unlock().
Exemplu:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
În acest exemplu, increment crește în mod sigur valoarea counter, prevenind accesul simultan din mai multe gorutine.