pthread_mutex_lock(3-thr) pthread_mutex_lock(3-thr)
NAME
pthreadmutexlock - Einen nicht gesperrten Mutex sperren
SYNTAX
#include <pthread.h>
int pthreadmutexlock(pthreadmutext *mutex);
PARAMETER
mutex Der Mutex, der gesperrt wird.
BESCHREIBUNG
Die Routine pthreadmutexlock() sperrt einen Mutex. Ist ein Mutex
bereits gesperrt, wenn ein Thread diese Routine aufruft, wartet der
Thread so lange, bis der Mutex freigegeben wird.
Der Thread, der den Mutex gesperrt hat, wird zu dessen Eigner und
bleibt dies so lange, bis derselbe Thread den Mutex wieder entsperrt
hat. Wenn diese Routine zurückkehrt, befindet sich der Mutex im
gesperrten Status, und der aktuelle Thread ist der derzeitige Eigner
des Mutex.
Wenn Sie in einem Aufruf von pthreadmutexattrsetkindnp() einen
schnellen (fast) Mutex angegeben haben, kann dies zu einem Deadlock
führen, wenn der aktuelle Eigner eines Mutex diese Routine aufruft, um
einen Mutex ein zweites Mal zu sperren. Wenn Sie in einem Aufruf von
pthreadmutexattrsetkindnp() einen rekursiven Mutex angegeben haben,
kann der Eigner eines Mutex denselben Mutex erneut sperren, ohne den
Thread zu blockieren. Wenn Sie in einem Aufruf von
pthreadmutexattrsetkindnp() einen nicht rekursiven Mutex angegeben
haben, wird ein Fehler zurückgegeben, und der Thread wird nicht blok-
kiert, wenn der aktuelle Eigner eines Mutex diese Routine aufruft, um
den Mutex ein zweites Mal zu sperren.
Die Prozeßumschaltung (preemption) eines Thread mit niedriger Priori-
tät, der einen Mutex sperrt, führt möglicherweise dazu, daß Threads
mit höherer Priorität, die auf denselben Mutex warten, auf unbestimmte
Zeit blockiert werden. Die Ausführung des wartenden Thread mit der
höheren Priorität wird so lange blockiert, wie noch eine ausreichende
Anzahl lauffähiger Threads beliebiger Priorität zwischen den Werten
für niedrige und hohe Priorität vorliegt. Eine Umkehrung der Priorität
tritt auf, wenn eine Ressource von mehreren Threads mit unterschiedli-
chen Prioritäten gemeinsam benutzt wird.
RÜCKGABEWERTE
Wenn die Funktion fehlschlägt, kann errno auf einen der folgenden
Werte gesetzt werden:
EINVAL Der durch mutex angegebene Wert ist ungültig.
EDEADLK Es liegt eine Deadlock-Bedingung vor.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
pthread_mutex_lock(3-thr) pthread_mutex_lock(3-thr)
SIEHE AUCH
pthreadmutexdestroy(3-thr), pthreadmutexinit(3-thr),
pthreadmutextrylock(3-thr), pthreadmutexunlock(3-thr),
pthreadmutexattrsetkindnp(3-thr).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98