Sobes.tech
Junior — Middle

Erklären Sie die Funktionsprinzipien von SpinLock und in welchen Szenarien es angewendet wird.

sobes.tech KI

Antwort von AI

SpinLock ist eine Synchronisationsprimitive, die beim Versuch, eine bereits belegte Sperre zu erlangen, den Thread nicht in den Wartezustand (sleep) versetzt, sondern eine aktive Schleife ("spin") ausführt, um die Verfügbarkeit der Sperre zu prüfen.

Funktionsprinzip:

  • Der Thread versucht, die Sperre zu erlangen.
  • Wenn die Sperre frei ist, erlangt er sie und fährt fort.
  • Wenn die Sperre belegt ist, prüft der Thread in einer Schleife ihren Zustand, ohne in den Schlafmodus zu wechseln.

Wann verwenden:

  • Wenn die Wartezeit auf die Sperre sehr kurz ist und das Wechseln zu sleep/wakeup teurer wäre.
  • In Systemen mit niedriger Latenz und hoher Konkurrenz.

Nachteile:

  • Bei langer Wartezeit werden CPU-Ressourcen verschwendet.

Beispiel in Pseudocode:

while !atomic_compare_and_swap(&lock, 0, 1) {
    // aktive Wartezeit
}
// kritischer Abschnitt
lock = 0