
Synchronisationsprimitive
sync.Mutex, RWMutex, Once, Pool, Map, Cond, atomare Operationen
1Was ist ein sync.Mutex in Go?
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.
2Was passiert, wenn wir nach Lock auf einem sync.Mutex den Aufruf von Unlock vergessen?
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.
3Was ist der Hauptunterschied zwischen sync.Mutex und sync.RWMutex?
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.
Warum defer mit Unlock auf einem sync.Mutex verwenden?
Wann sollte man sync.RWMutex gegenüber sync.Mutex bevorzugen?
+19 Interview-Fragen
Weitere Go-Interviewthemen
Go-Grundlagen
Go-Datenstrukturen
Go-Interfaces
Fehlerbehandlung
Goroutines-Grundlagen
Channels
Go Modules
HTTP-Server
HTTP-Client
JSON-Kodierung
Database/SQL
context-Paket
Testing
Concurrency-Patterns
Go-Web-Frameworks
REST-API-Design
gRPC
Reflection
Speicherverwaltung
Performance-Optimierung
Generics
Go Design Patterns
Microservices
Sicherheit und Authentifizierung
Docker & Containerization
Kubernetes Basics
Fortgeschrittenes Go
CLI-Entwicklung
Meistere Go für dein nächstes Interview
Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.
Kostenlos starten