OOStuBS/MPStuBS
|
Mit Hilfe eines Ticketlocks kann man Codeabschnitte serialisieren, die echt nebenläufig auf mehreren CPUs laufen. Mehr ...
#include <ticketlock.h>
Öffentliche Methoden | |
Ticketlock () | |
Konstruktor; Initialisierung des Ticketlocks. | |
void | lock () |
Betritt den gesperrten Abschnitt. Ist dieser besetzt, so wird solange aktiv gewartet, bis er betreten werden kann. | |
void | unlock () |
Gibt den gesperrten Abschnitt wieder frei. | |
Mit Hilfe eines Ticketlocks kann man Codeabschnitte serialisieren, die echt nebenläufig auf mehreren CPUs laufen.
Die Synchronisation läuft dabei über eine Sperr- und eine Ticket-Variable. Sobald jemand den kritischen Abschnitt betreten will, holt er sich sein Ticket durch atomares Erhöhen der Ticket-Variable und wartet darauf, dass die Sperr-Variable seinen Ticket-Zählerstand erreicht. Verlässt er den kritischen Abschnitt, so erhöht er die Sperr-Variable und der nächste ist an der Reihe.