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