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