- Spin-Lock
-
Ein Spinlock (Spin-Lock) ist ein Mechanismus der Prozesssynchronisation. Es ist eine Sperre (Lock) in Form einer Variablen zum Schutz von gemeinsam genutzten Ressourcen (Datenstrukturen) vor modifizierendem Zugriff durch konkurrierende Prozesse bzw. Threads (s. Kritischer Abschnitt). Die Sperre wird durch aktives Warten überwunden:
solange (Sperrvariable besitzt Wert 'gesperrt') { tue nichts; } setze Sperrvariable auf 'gesperrt' modifiziere Ressource setze Sperrvariable auf 'offen'
Der Prozess/Thread, der die Sperrvariable auf 'gesperrt' setzt, wird als Besitzer der Sperrvariable bezeichnet. Versucht ein Prozess/Thread in den Besitz der Sperrvariable zu gelangen, wenn diese im Besitz eines anderen Prozesses/Threads ist, so wartet er auf die Freigabe aktiv. Dieses aktive und Prozessorkapazität verschwendende Warten ist ein wesentliches Merkmal der als Spinlock eingesetzten Sperrvariable. Die Sperrvariable soll jeweils nur für kurze Zeit im Besitz eines Prozesses/Threads sein. Prozess-/Threadwechsel, die einen Verwaltungsaufwand erfordern und die erforderlich wären, wenn die Sperrvariable nicht aktiv abgefragt würde, sollen vermieden werden, wenn der Aufwand für die Veränderung der Ressource gering ist.
Da die Veränderung der Sperrvariablen ihrerseits geschützt werden muss, werden sie abhängig von der Prozessorarchitektur implementiert.
Wikimedia Foundation.