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