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.