Junior — Middle
Kannst du erklären, welche Arten von Sperren es gibt und wie sie in der Multithread-Programmierung funktionieren?
sobes.tech KI
Antwort von AI
In der Multithread-Programmierung gibt es verschiedene Arten von Sperren, die helfen, den Zugriff auf gemeinsam genutzte Ressourcen zu synchronisieren:
- Mutex (Mutual Exclusion) — sorgt für exklusiven Zugriff auf eine Ressource. Nur ein Thread kann den Mutex zu einem Zeitpunkt erfassen.
- Rekursiver Mutex — erlaubt es demselben Thread, die Sperre mehrfach zu erwerben, ohne sich gegenseitig zu blockieren.
- Lese-Schreib-Sperre (Read-Write Lock) — erlaubt mehreren Threads gleichzeitig das Lesen der Ressource, aber das Schreiben ist nur exklusiv möglich.
- Semaphore — begrenzt die Anzahl der Threads, die gleichzeitig auf die Ressource zugreifen können.
- Spinlock (aktive Wartezeit) — der Thread prüft in einer Schleife, ob die Sperre verfügbar ist, ohne in einen Wartezustand zu wechseln.
Beispiel für die Verwendung eines Mutex in Swift:
let lock = NSLock()
func criticalSection() {
lock.lock()
// Kritischer Abschnitt
lock.unlock()
}
Die Wahl des Sperrtyps hängt von der Aufgabe sowie den Anforderungen an Leistung und Sicherheit ab.