Sobes.tech
Junior — Middle

Cum se implementează mecanismul de excludere mutuală folosind Mutex în limbajul Go?

sobes.tech AI

Răspuns de la AI

În limbajul Go, pentru implementarea excluderii reciproce (mutex), se folosește tipul sync.Mutex. Acesta permite protejarea secțiunilor critice ale codului împotriva accesului simultan din mai multe goroutine, prevenind condițiile de cursă.

Operații principale:

  • Lock() — blochează mutex-ul, împiedicând alte goroutine să acceseze.
  • Unlock() — deblochează mutex-ul, permițând altor goroutine să continue.

Exemplu de utilizare:

package main

import (
    "fmt"
    "sync"
)

func main() {
    var mu sync.Mutex
    counter := 0

    mu.Lock() // Blochează mutex-ul
    counter++
    fmt.Println("Contor:", counter)
    mu.Unlock() // Deblochează mutex-ul
}

În mediile multithread, mutex-ul garantează că doar o goroutine execută codul dintre Lock() și Unlock() la un moment dat, prevenind modificările incorecte ale datelor partajate.