Middle
Wat is een Mutex?
sobes.tech AI
Antwoord van AI
Mutex (mutual exclusion) is een synchronisatie-mechanisme in Go, dat wordt gebruikt om gelijktijdige toegang van meerdere goroutines tot gedeelde bronnen, zoals variabelen of datastructuren, te voorkomen. Mutex zorgt ervoor dat op elk moment slechts één goroutine de lock kan bezitten en de kritieke sectie van de code kan uitvoeren.
Voorbeeld van het gebruik van sync.Mutex in Go:
import (
"fmt"
"sync"
)
func main() {
var mu sync.Mutex
teller := 0
increment := func() {
mu.Lock() // vergrendeling verkrijgen
defer mu.Unlock() // vergrendeling vrijmaken
teller++
}
var wg sync.WaitGroup
for i := 0; i < 1000; i++ {
wg.Add(1)
go func() {
defer wg.Done()
increment()
}()
}
wg.Wait()
fmt.Println("Teller:", teller)
}
Zonder Mutex kan het resultaat incorrect zijn vanwege race conditions.