pthread_cond_wait(3-thr) pthread_cond_wait(3-thr)
NAME
pthreadcondwait - Veranlassen, daß ein Thread auf Signalisierung
oder Broadcasting einer Condition-Variablen wartet
SYNTAX
#include <pthread.h>
int pthreadcondwait(
pthreadcondt *cond,
pthreadmutext *mutex);
PARAMETER
cond Die Condition-Variable, auf die gewartet wird.
mutex Der Mutex, der zu der in cond angegebenen Condition-Variab-
len gehört.
BESCHREIBUNG
Die Routine pthreadcondwait() veranlaßt einen Thread auf Signalisie-
rung oder Broadcasting einer Condition-Variable zu warten. Jede Bedin-
gung entspricht einem oder mehreren Prädikaten basierend auf gemeinsam
genutzten Daten. Der aufrufende Thread wartet daruf, daß diese Daten
einen bestimmten Status erreichen (in dem das Prädikat zutrifft).
Rufen Sie diese Routine erst auf, nachdem Sie den in mutex angegebenen
Mutex gesperrt haben. Die Ergebnisse dieser Routine sind unvorherseh-
bar, wenn sie aufgerufen wird, ohne daß zuvor der Mutex gesperrt
wurde.
Diese Routine gibt den Mutex automatisch frei und veranlaßt den aufru-
fenden Thread dazu, auf die Bedingung zu warten. Wenn ein Thread die
Routine pthreadcondsignal() oder pthreadcondbroadcast() aufgerufen
hat, und das Warten somit beendet ist, wird der Mutex erneut angelegt,
und die Routine kehrt zurück.
Ein Thread, der den Status des durch den Mutex geschützten Speichers
so ändert, daß ein einer Condition-Variablen zugeordnetes Prädikat
jetzt zutreffen könnte, muß entweder pthreadcondsignal() oder
pthreadcondbroadcast() für die entsprechende Condition-Variable auf-
rufen. Erfolgt keiner dieser beiden Aufrufe, bleiben alle Threads, die
auf diese Condition-Variable warten, weiterhin im Wartestatus.
Mit geringer Wahrscheinlichkeit kann diese Routine auch dann zurück-
kehren, wenn keine Signalisierung oder kein Broadcasting der Condi-
tion-Variablen erfolgt. Bei einer Pseudo-Aktivierung wird der Mutex
erneut angelegt und zwar bevor die Routine zurückkehrt. (Für diese
Situation sollte die Routine in eine Schleife eingeschlossen werden,
die das Prädikat überprüft.)
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
pthread_cond_wait(3-thr) pthread_cond_wait(3-thr)
RÜCKGABEWERTE
Wenn die Funktion fehlschlägt, kann errno auf einen der folgenden
Werte gesetzt werden:
EINVAL Der durch cond oder mutex angegebene Wert ist ungültig.
EDEADLK Es liegt eine Deadlock-Bedingung vor.
SIEHE AUCH
pthreadcondbroadcast(3-thr), pthreadconddestroy(3-thr),
pthreadcondinit(3-thr), pthreadcondsignal(3-thr),
pthreadcondtimedwait(3-thr).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98