PPL7-Icon Patrick's Programming Library Version 7.0.0 - Dokumentation
ppl7::Mutex Klassenreferenz

Synchronisation von Threads. Mehr ...

Öffentliche Methoden

 Mutex ()
 
 ~Mutex () throw ()
 
void lock ()
 Mutex sperren. Mehr ...
 
int signal () throw ()
 Signal senden. Mehr ...
 
bool tryLock () throw ()
 Mutex versuchen zu sperren. Mehr ...
 
void unlock ()
 Mutex entsperren. Mehr ...
 
int wait (int milliseconds=0) throw ()
 Auf Signal warten. Mehr ...
 

Private Attribute

void * handle
 

Ausführliche Beschreibung

Mutexes stellen ein Low-Level-Interface für die Synchronisation von Threads dar. Mit ihnen kann verhindert werden, dass mehrere Threads versuchen gleichzeitig auf die gleichen Daten zuzugreifen.

Beschreibung der Konstruktoren und Destruktoren

ppl7::Mutex::Mutex ( )
ppl7::Mutex::~Mutex ( )
throw (
)

Dokumentation der Elementfunktionen

void ppl7::Mutex::lock ( )

Diese Funktion versucht einen Mutex zu sperren. Ist dieser bereits durch einen anderen Thread blockiert, wird gewartet, bis der Mutex wieder frei wird.

Ausnahmebehandlung
DeadlockExceptionWird geworfen, wenn durch das Sperren des Mutex ein Deadlock entstehen würde
MutexLockingExceptionMutex konnte nicht gesperrt werden
int ppl7::Mutex::signal ( )
throw (
)

Mit dieser Funktion wird dem Mutex ein Signal gegeben. Hat ein Thread sich selbst durch Aufruf der Wait-Funktion (siehe CMutex::Wait) angehalten, wird er nach Aufruf des Signals fortgesetzt.

Rückgabe
Bei Erfolg liefert die Funktion true (1) zurück, sonst false (0).
bool ppl7::Mutex::tryLock ( )
throw (
)

Diese Funktion versucht wie CMutex::Lock einen Mutex zu sperren. Ist dieser allerdings bereits durch einen anderen Thread blockiert, wird nicht gewartet, bis der Mutex wieder frei wird, sondern es wird sofort ein Fehler zurückgeliefert.

Rückgabe
Konnte der Mutex erfolgreich gesperrt werden, liefert die Funktion true (1) zurück, im Fehlerfall false (0)
void ppl7::Mutex::unlock ( )

Mit dieser Funktion wird ein zuvor mit Mutex::lock gesperrter Mutex wieder frei gegeben.

Ausnahmebehandlung
MutexNotLockedExceptionMutex war nicht gesperrt
MutexLockingExceptionMutex konnte nicht entsperrt werden
int ppl7::Mutex::wait ( int  milliseconds = 0)
throw (
)

Der aufrufende Thread wird angehalten, bis ein anderer Thread diesem Mutex ein Signal gibt (siehe CMutex::Signal) oder die optional angegebene Zeit abgelaufen ist.

Parameter
millisecondsOptionale Angabe einer Zeit, nach deren Ablauf der Thread automatisch wieder fortgeführt wird. Default = 0 = unendlich.
Rückgabe
Liefert true (1), wenn dem Mutex ein Signal gegeben wurde. Wenn microseconds angegeben wurde, liefert die Funktion nach Ablauf des Timeouts 0 zurück, andernfalls wartet die Funktion so lange, bis ein Signal gegeben wurde.
Zu beachten
War der Mutex vor Aufruf dieser Funktion bereits gelocked, ist er es nach dem Aufruf immer noch.

Dokumentation der Datenelemente

void* ppl7::Mutex::handle
private

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