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