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