Junior — Middle
Wie wird das Mechanismus der gegenseitigen Ausschlusses mit Mutex in der Programmiersprache Go implementiert?
sobes.tech KI
Antwort von AI
In der Programmiersprache Go wird für die Implementierung von gegenseitiger Ausschluss (Mutex) der Typ sync.Mutex verwendet. Er ermöglicht den Schutz kritischer Codeabschnitte vor gleichzeitigen Zugriffen mehrerer Goroutines und verhindert Rennbedingungen.
Hauptoperationen:
Lock()— sperrt den Mutex, sodass andere Goroutines keinen Zugriff haben.Unlock()— entsperrt den Mutex, sodass andere Goroutines fortfahren können.
Beispiel für die Verwendung:
package main
import (
"fmt"
"sync"
)
func main() {
var mu sync.Mutex
counter := 0
mu.Lock() // Sperrt den Mutex
counter++
fmt.Println("Zähler:", counter)
mu.Unlock() // Entsperrt den Mutex
}
In einer Multithread-Umgebung garantiert der Mutex, dass nur eine Goroutine gleichzeitig den Code zwischen Lock() und Unlock() ausführt, was inkorrekte Änderungen an gemeinsamen Daten verhindert.