Go

Synchronisationsprimitive

sync.Mutex, RWMutex, Once, Pool, Map, Cond, atomare Operationen

22 Interview-Fragen·
Mid-Level
1

Was ist ein sync.Mutex in Go?

Antwort

Ein sync.Mutex (mutual exclusion lock) ist eine Synchronisationsprimitive, die sicherstellt, dass nur eine Goroutine gleichzeitig auf einen kritischen Abschnitt zugreifen kann. Der Aufruf von Lock blockiert, bis der Mutex verfügbar ist, und Unlock gibt ihn für andere Goroutinen frei. Wird verwendet, um den gleichzeitigen Zugriff auf gemeinsame Daten zu schützen.

2

Was passiert, wenn wir nach Lock auf einem sync.Mutex den Aufruf von Unlock vergessen?

Antwort

Das Vergessen von Unlock erzeugt einen potenziellen Deadlock, da andere Goroutinen unbegrenzt darauf warten, den Mutex zu erlangen. Die beste Praxis ist die Verwendung von defer, um sicherzustellen, dass Unlock auch im Falle einer Panik aufgerufen wird. Paare Lock und Unlock immer im selben Scope, um Lock-Lecks zu vermeiden.

3

Was ist der Hauptunterschied zwischen sync.Mutex und sync.RWMutex?

Antwort

Der sync.RWMutex erlaubt mehrere gleichzeitige Lesevorgänge über RLock, aber nur einen exklusiven Schreibvorgang über Lock. Dies verbessert die Leistung bei leselastigen Szenarien, da sich Leser nicht gegenseitig blockieren. Verwende RWMutex, wenn Lesevorgänge häufig und Schreibvorgänge selten sind.

4

Warum defer mit Unlock auf einem sync.Mutex verwenden?

5

Wann sollte man sync.RWMutex gegenüber sync.Mutex bevorzugen?

+19 Interview-Fragen

Meistere Go für dein nächstes Interview

Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.

Kostenlos starten