Sobes.tech
Junior — Middle

Hoe wordt het mechanisme van onderlinge uitsluiting geïmplementeerd met behulp van Mutex in de programmeertaal Go?

sobes.tech AI

Antwoord van AI

In de programmeertaal Go wordt voor het implementeren van onderlinge uitsluiting (mutex) het type sync.Mutex gebruikt. Het stelt je in staat om kritieke secties van de code te beschermen tegen gelijktijdige toegang door meerdere goroutines, waardoor racecondities worden voorkomen.

Belangrijkste operaties:

  • Lock() — vergrendelt de mutex, waardoor andere goroutines geen toegang krijgen.
  • Unlock() — ontgrendelt de mutex, waardoor andere goroutines verder kunnen.

Voorbeeld van gebruik:

package main

import (
    "fmt"
    "sync"
)

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

    mu.Lock() // Vergrendelt de mutex
    counter++
    fmt.Println("Counter:", counter)
    mu.Unlock() // Ontgrendelt de mutex
}

In een multithread-omgeving garandeert de mutex dat slechts één goroutine tegelijk de code tussen Lock() en Unlock() uitvoert, wat incorrecte wijzigingen aan gedeelde gegevens voorkomt.