Junior — Middle
Ați putea explica principiul de funcționare al mutex-ului și utilizarea sa în programele multi-thread?
sobes.tech AI
Răspuns de la AI
Excluderea mutuală (Mutex) este un mecanism de sincronizare utilizat pentru a preveni accesul simultan al mai multor fire la o resursă comună (de exemplu, o variabilă sau un fișier). Mutex garantează că, în orice moment, doar un singur fir poate deține blocarea și executa secțiunea critică a codului.
Principiul de funcționare:
- Firul încearcă să obțină mutex-ul înainte de a intra în secțiunea critică.
- Dacă mutex-ul este liber, firul obține accesul și continuă.
- Dacă mutex-ul este ocupat de alt fir, firul curent se blochează și așteaptă eliberarea.
- După finalizarea lucrului cu resursa, firul eliberează mutex-ul, permițând altor fire să continue.
În Go, acest lucru se implementează prin tipul sync.Mutex:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock() // blocare mutex
counter++ // secțiune critică
mu.Unlock() // deblocare mutex
}
Utilizarea mutex-ului previne condițiile de cursă și asigură corectitudinea datelor în timpul execuției paralele.