Sobes.tech
Junior — Middle

Explica ce este o blocare (Lock) în contextul unui mutex și pentru ce este utilizată.

sobes.tech AI

Răspuns de la AI

Blocarea (Lock) este un mecanism de sincronizare utilizat pentru a preveni accesul simultan al mai multor fire sau goroutines la o resursă comună, pentru a evita condițiile de cursă și a asigura corectitudinea datelor.

În contextul unui mutex, blocarea înseamnă că atunci când un fir preia (lock) un mutex, alte fire care încearcă să-l preia vor aștepta până când primul îl eliberează (unlock).

Exemplu în Go:

var mu sync.Mutex
var counter int

func increment() {
    mu.Lock()         // preia blocarea
    counter++         // secțiune critică
    mu.Unlock()       // eliberează blocarea
}

Astfel, blocarea garantează că doar un fir execută secțiunea critică a codului într-un moment dat.