Spinlock

Spinlock

Ein Spinlock (Spin-Lock) ist ein Mechanismus zur Prozesssynchronisation. Es ist eine Sperre (Lock) zum Schutz einer gemeinsam genutzten Ressource durch konkurrierende Prozesse bzw. Threads (siehe Kritischer Abschnitt). Die Sperre wird umgesetzt mittels aktivem Wartens:

//Eintrittsprotokoll
solange (Sperrvariable besitzt Wert 'gesperrt') { //   \
   tue nichts;                                    //   | Achtung! Hier:
}                                                 //   | Atomares Vergleichen und Setzen
setze Sperrvariable auf 'gesperrt'                //   /

//kritischer Abschnitt
modifiziere Ressource

//Austrittsprotokoll
setze Sperrvariable auf 'offen'

Zu Anfang besitzt die Sperrvariable den Wert 'frei'. Alle Prozesse durchlaufen für den Eintritt in einen kritischen Abschnitt das gleiche Protokoll: Wenn die Sperrvariable 'frei' ist, setze sie auf 'gesperrt', ansonsten prüfe dies erneut (aktives Warten). Das Prüfen und Setzen erfolgt atomar und wird je nach Prozessorarchitektur anders implementiert (siehe Fetch-and-add, Compare-and-swap oder Test-and-set).

Der Prozess, der die Sperrvariable auf 'gesperrt' setzt, wird als Besitzer der Sperrvariable bezeichnet.

Vorteile

Das Verfahren vermeidet Kontextwechsel, die sehr zeitaufwändig sind. Wenn das Warten auf die Freigabe der Sperre kürzer als ein Kontextwechsel ist, kann dieser Mechanismus trotz verschenkter Prozessorkapazitäten schneller ablaufen als alternative Sperrmöglichkeiten wie bspw. Mutex. Dies erhöht die effektive Parallelität gegenüber threadwechselnden Sperrmöglichkeiten teilweise erheblich und ist daher bei stark nebenläufigen Algorithmen oftmals die bevorzugte Vorgehensweise.

Nachteile

Das aktive Warten verschenkt Prozessorkapazitäten, welches ein wesentliches Merkmal der Spinlocks sind. Ein Spinlock kann die Programmausführung stark verlangsamen, wenn mehr Threads als Prozessorkerne vorhanden sind.


Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Spinlock — In software engineering, a spinlock is a lock where the thread simply waits in a loop ( spins ) repeatedly checking until the lock becomes available. As the thread remains active but isn t performing a useful task, the use of such a lock is a… …   Wikipedia

  • Spinlock — En programmation informatique, le spinlock ou verrou tournant est un mécanisme simple de synchronisation basé sur l attente active. Algorithme TestAndSet(*s, v) { s< v return prev(s) } //Instruction Atomique (ie non interruptible) init(s) {… …   Wikipédia en Français

  • Spinlock — Для улучшения этой статьи желательно?: Викифицировать статью. Найти и оформить в виде сносок ссылки на авторитетные источники, подтверждающие написанное …   Википедия

  • Spinlock — En ingeniería de software, un spinlock es cuando un hilo (o thread) simplemente espera en un bucle ( spins ) repetidamente hasta que se cumple una condición, como por ejemplo la llegada de un paquete por la red o un semáforo que se haga… …   Wikipedia Español

  • Spinlock — En ingeniería de software, un spinlock es cuando un hilo (o thread) simplemente espera en un bucle ( spins ) repetidamente hasta que se cumple una condición, como por ejemplo la llegada de un paquete por la red o un semáforo que se haga… …   Enciclopedia Universal

  • Busy waiting — In software engineering, busy waiting or spinning is a technique in which a process repeatedly checks to see if a condition is true, such as waiting for keyboard input or waiting for a lock to become available. It can also be used to delay… …   Wikipedia

  • Gegenseitiger Ausschluss — Der Begriff Wechselseitiger Ausschluss bzw. Mutex (Abk. für engl. mutual exclusion, auf deutsch etwa wechselseitiger Ausschluss) bezeichnet eine Gruppe von Verfahren, mit denen das Problem des kritischen Abschnitts gelöst wird. Mutex Verfahren… …   Deutsch Wikipedia

  • Wechselseitiger Ausschluss — Der Begriff Wechselseitiger Ausschluss bzw. Mutex (Abk. für engl. mutual exclusion, auf deutsch etwa wechselseitiger Ausschluss) bezeichnet eine Gruppe von Verfahren, mit denen das Problem des kritischen Abschnitts gelöst wird. Mutex Verfahren… …   Deutsch Wikipedia

  • Lock convoy — In computer science, a lock convoy is a performance problem that can occur when using locks for concurrency control in a multithreaded application. A lock convoy occurs when multiple threads of equal priority contend repeatedly for the same lock …   Wikipedia

  • Test-and-set — In computer science, the test and set instruction is an instruction used to both test and (conditionally) write to a memory location as part of a single atomic (i.e. non interruptible) operation. This means setting a value, but first performing… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”