Semaphore werden zur Synchronisation von Threads verwendet. Mehr ...
#include <semaphore.h>


Öffentliche Methoden | |
| Semaphore (int c) | |
| Der Konstruktor initialisiert den Semaphorzähler mit dem angegebenen Wert c. Mehr ... | |
| void | p () |
| Warten auf das Freiwerden eines kritischen Abschnitts. Mehr ... | |
| void | v () |
| Freigeben des kritischen Abschnitts. Mehr ... | |
Öffentliche Methoden geerbt von Waitingroom | |
| virtual | ~Waitingroom () |
| Destruktor. Mehr ... | |
| virtual void | remove (Thread *customer) |
| Mit dieser Methode kann der angegebene Thread customer vorzeitig aus dem Wartezimmer entfernt werden. Mehr ... | |
Öffentliche Methoden geerbt von Queue< Thread > | |
| Queue () | |
| Der Konstruktor initialisiert die Liste als leere Liste. | |
| void | enqueue (Thread *item) |
| Das Listenelement item wird an das Ende der Liste angefügt. Mehr ... | |
| Thread * | dequeue () |
| Liefert das erste Element der Liste und entfernt es gleichzeitig aus dieser. Mehr ... | |
| Iterator | begin () |
| Iterator | end () |
| Thread * | remove (Thread *item, bool(*cmp)(Thread *, Thread *)=[](Thread *a, Thread *b){return a==b;}) |
| Mit dieser Methode kann das angegebene Element item aus der Liste entfernt werden, unabhängig von seiner Position dort. Verglichen werden die Pointer-Adressen, optional kann eine Vergleichsfunktion angegeben werden. Die Standardvergleichsfunktion ist ein C++11 Lambda Ausdruck, der auf Pointer-Gleichheit prüft. Mehr ... | |
| void | insert_first (Thread *item) |
| Fügt das item am Anfang der Liste ein. Mehr ... | |
| void | insert_after (Thread *old_item, Thread *new_item) |
| Fügt das Element new_item hinter dem Element old_item in die Liste ein. Mehr ... | |
| Thread * | first () |
| Liefert das erste Element der Liste, ohne es zu entfernen. Mehr ... | |
| Thread * | next (Thread *o) |
| Liefert das nächste Element der Liste für ein gegebenes Element. | |
Weitere Geerbte Elemente | |
Öffentliche, statische Methoden geerbt von Queue< Thread > | |
| static QueueLink< Thread > * | get_node (Thread *o) |
| Gibt einen Zeiger auf das QueueLink-Element innerhalb des Argument-Objektes zurück. Mehr ... | |
Semaphore werden zur Synchronisation von Threads verwendet.
Die Klasse Semaphore implementiert das Synchronisationskonzept des zählenden Semaphors. Die benötigte Warteliste erbt sie dabei von ihrer Basisklasse Waitingroom.
|
inline |
Der Konstruktor initialisiert den Semaphorzähler mit dem angegebenen Wert c.
| c | Initaler Zählerwert des Semaphors |
| void Semaphore::p | ( | ) |
Warten auf das Freiwerden eines kritischen Abschnitts.
Warteoperation: Sofern der Semaphorzähler größer als Null ist, wird er nur um eins erniedrigt. Anderenfalls wird der aktuell laufende Thread an die Warteliste angefügt und blockiert.
| void Semaphore::v | ( | ) |
Freigeben des kritischen Abschnitts.
Freigabeoperation: Wenn auf der Warteliste mindestens ein Thread eingetragen ist, wird der erste davon aufgeweckt. Anderenfalls wird der Semaphorzähler um eins erhöht.