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.