Friedrich-Alexander-Universität Erlangen-Nürnberg  /   Technische Fakultät  /   Department Informatik

Übungen zu BST (SS 2015)

Spinlock Klassenreferenz

Mit Hilfe eines Spinlocks kann man Codeabschnitte serialisieren die echt nebenläufig auf mehreren CPUs laufen. Mehr ...

#include <spinlock.h>

Ausführliche Beschreibung

Mit Hilfe eines Spinlocks kann man Codeabschnitte serialisieren die echt nebenläufig auf mehreren CPUs laufen.

Die Synchronisation läuft dabei über eine Sperrvariable. Sobald jemand den kritischen Abschnitt betreten will, setzt er die Sperrvariable. Verlässt er den kritischen Abschnitt, so setzt er sie wieder zurück. Ist die Sperrvariable jedoch schon gesetzt, dann wartet er aktiv darauf, dass sie der Besitzer des kritischen Abschnittes beim Verlassen wieder zurücksetzt.

Zur Implementierung können die beiden GCC-Intrinsics __sync_lock_test_and_set(unsigned int* lock_status, unsigned int value) und __sync_lock_release(unsigned int* lock_status) verwendet werden. Diese werden vom Compiler in die architekturspezifischen atomaren Operationen übersetzt.

Eintrag im GCC Manual über Atomic Builtins


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei: