Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ pthread_cond_init(3-thr) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

pthread_cond_init(3-thr)                           pthread_cond_init(3-thr)

NAME
     pthreadcondinit - Eine Condition-Variable erstellen

SYNTAX
     #include <pthread.h>

     int pthreadcondinit(
          pthreadcondt *cond,
          pthreadcondattrt attr);

PARAMETER
     cond      Die Condition-Variable, die erstellt wird.

     attr      Das Objekt für Attribute von Condition-Variablen, das die
               Merkmale der erstellten Condition-Variablen definiert. Wenn
               Sie pthreadcondattrdefault angeben, werden die Standardat-
               tribute verwendet.

BESCHREIBUNG
     Die Routine pthreadcondinit() erstellt und initialisiert eine
     Condition-Variable. Eine Condition-Variable ist ein Synchronisations-
     objekt, das zusammen mit einem Mutex verwendet wird. Ein solcher Mutex
     steuert den Zugriff auf gemeinsam genutzte Daten. Mit Hilfe einer
     Condition-Variablen können Threads darauf warten, daß diese Daten
     einen definierten Status annehmen. Der Status wird durch einen boole-
     schen Ausdruck, dem sogenannten Prädikat, definiert.

     Durch Signalisierung oder Broadcasting einer Condition-Variablen wird
     angezeigt, daß jetzt möglicherweise ein Prädikat zutrifft. Die Broad-
     cast-Operation gibt an, daß alle wartenden Threads die Ausführung wie-
     deraufnehmen und das Prädikat neu bewerten müssen. Die Signal-Opera-
     tion wird verwendet, wenn einer der wartenden Threads fortgesetzt wer-
     den kann.

     Wenn ein Thread, der einen Mutex hält, feststellt, daß die gemeinsam
     genutzten Daten nicht den richtigen Status für eine Fortsetzung der
     Verarbeitung aufweisen (das heißt, das zugehörige Prädikat trifft
     nicht zu), wartet er auf eine Condition-Variable mit dem gewünschten
     Status. Durch das Warten auf die Condition-Variable wird der Mutex
     automatisch freigegeben, so daß andere Threads die gemeinsam genutzten
     Daten verändern oder prüfen können. Wenn ein Thread den Status der
     gemeinsam genutzten Daten ändert, so daß jetzt möglicherweise ein Prä-
     dikat zutrifft, wird eine Signal- oder Broadcast-Operation zur ent-
     sprechenden Condition-Variablen ausgegeben, damit die Ausführung der
     Threads, die auf dieses Prädikat warten, fortgesetzt werden kann.

     Dabei ist es wichtig, daß alle Threads, die auf eine bestimmte
     Condition-Variable warten, zu jederzeit denselben Mutex halten.
     Andernfalls ist das Verhalten beim Warten unvorhersehbar (eine Imple-
     mentierung kann den Mutex zur Steuerung des internen Zugriffs auf das
     Objekt für die Condition-Variablen verwenden). Allerdings ist es
     zulässig, daß ein Client Condition-Variablen und Mutexe speichert und



Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

pthread_cond_init(3-thr)                           pthread_cond_init(3-thr)

     sie später in anderen Kombinationen erneut einsetzt. Der Client muß
     sicherstellen, daß keine Threads die Condition-Variable mit dem alten
     Mutex verwenden. Einem einzelnen Mutex kann eine beliebige Anzahl von
     Condition-Variablen zugeordnet sein, wobei jede für ein anderes Prädi-
     kat der gemeinsam genutzten Daten steht, die durch diesen Mutex
     geschützt sind.

     Condition-Variablen gehören nicht zu einem bestimmten Thread. Die
     Belegung eines zugehörigen Speichers wird nicht automatisch aufgeho-
     ben, wenn der erstellende Thread beendet wird.

RÜCKGABEWERTE
     Wenn die Funktion fehlschlägt, kann errno auf einen der folgenden
     Werte gesetzt werden:

     EAGAIN    Das System verfügt nicht über die für die Initialisierung
               einer weiteren Condition-Variablen erforderlichen Ressour-
               cen.

     EINVAL    Ungültiges Attributobjekt.

     ENOMEM    Der Speicher reicht für die Initialisierung der Condition-
               Variablen nicht aus.

SIEHE AUCH
     pthreadcondbroadcast(3-thr), pthreadconddestroy(3-thr),
     pthreadcondsignal(3-thr), pthreadcondtimedwait(3-thr),
     pthreadcondwait(3-thr).


























Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026