Junior — Middle
Welche Rolle spielen Synchronisationsprimitive in der Programmiersprache Go?
sobes.tech KI
Antwort von AI
Die Synchronisationsprimitive in Go werden verwendet, um den Zugriff auf gemeinsam genutzte Ressourcen zu steuern und die Ausführung von Goroutines zu koordinieren, um Race Conditions zu vermeiden und die Korrektheit des Programms sicherzustellen.
Hauptprimitive:
- Mutex (sync.Mutex) — sorgt für gegenseitigen Ausschluss, sodass nur eine Goroutine gleichzeitig den kritischen Abschnitt ausführt.
- WaitGroup (sync.WaitGroup) — ermöglicht das Warten auf das Ende einer Gruppe von Goroutines.
- Kanal — ein Kanal zur Datenübertragung zwischen Goroutines, der an sich eine mächtige Synchronisationsprimitive ist.
- RWMutex (sync.RWMutex) — erlaubt mehreren Goroutines, Daten gleichzeitig zu lesen, aber Schreibzugriffe blockieren alle.
Beispiel für die Verwendung von Mutex:
var mu sync.Mutex
var zähler int
func inkrementieren() {
mu.Lock()
defer mu.Unlock()
zähler++
}
Auf diese Weise helfen Synchronisationsprimitive, Konflikte beim parallelen Datenzugriff zu vermeiden und eine korrekte Interaktion zwischen Goroutines sicherzustellen.