Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

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

Media Vault

Software Library

Restoration Projects

Artifacts Sought

pthread_mutexattr_setkind_np(3-thr)     pthread_mutexattr_setkind_np(3-thr)

NAME
     pthreadmutexattrsetkindnp - Attribut für den Mutex-Typ angeben

SYNTAX
     #include <pthread.h>

     int pthreadmutexattrsetkindnp(
          pthreadmutexattrt *attr,
          int kind);

PARAMETER
     attr      Das Objekt für Mutex-Attribute, das geändert wird.

     kind      Neuer Wert des Attributs für den Mutex-Typ. Der Parameter
               kind gibt den Typ des erstellten Mutex an. Gültige Werte
               sind MUTEXFASTNP (Standardwert), MUTEXRECURSIVENP und
               MUTEXNONRECURSIVENP.

BESCHREIBUNG
     Die Routine pthreadmutexattrsetkindnp() setzt das Attribut für den
     Mutex-Typ, das beim Erstellen eines Mutex verwendet wird.

     Ein schneller (fast) Mutex wird auf die schnellstmögliche Weise
     gesperrt und entsperrt. Ein solcher Mutex kann nur einmal gesperrt
     (abgerufen) werden. Bei allen nachfolgenden Aufrufen von
     pthreadmutexlock() wird der aufrufende Thread so lange blockiert,
     bis der Mutex durch den Thread, der Eigner dieses Mutex ist, freigege-
     ben wird. Wenn der Thread, der Eigner des Mutex ist, selbst versucht,
     diesen erneut zu sperren, wartet der Thread darauf, daß er selbst den
     Mutex freigibt (und verursacht so einen Deadlock).

     Ein rekursiver Mutex kann mehrmals durch denselben Thread gesperrt
     werden, ohne daß hierdurch ein Deadlock des Thread verursacht wird. In
     anderen Worten, ein einzelner Thread kann mehrere aufeinanderfolgende
     Aufrufe von pthreadmutexlock() ausgeben, ohne daß er blockiert wird.
     Der Thread muß dann die Routine pthreadmutexunlock() so oft aufru-
     fen, wie er zuvor die Routine pthreadmutexlock() aufgerufen hat,
     damit der Mutex von einem anderen Thread gesperrt werden kann.

     Ein nicht rekursiver Mutex wird wie beim Typ des schnellen Mutex nur
     einmal von einem Thread gesperrt. Wenn der Thread versucht, den Mutex
     erneut zu sperren, ohne ihn vorher zu entsperren, wird ein Fehler aus-
     gegeben. Demnach sind nicht rekursive Mutexe informativer als schnelle
     Mutexe, da letztere den Thread ohne Fehlermeldung blockieren, so daß
     es Ihre Sache ist, herauszufinden, warum der Thread nicht weiter aus-
     geführt wird. Außerdem wird bei einem nicht rekursiven Mutex auch dann
     ein Fehler zurückgegeben, wenn jemand anderes als der Eigner versucht,
     diesen zu entsperren.







Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

pthread_mutexattr_setkind_np(3-thr)     pthread_mutexattr_setkind_np(3-thr)

     Verwenden Sie einen rekursiven Mutex niemals zusammen mit Condition-
     Variablen, da das für pthreadcondwait() oder
     pthreadcondtimedwait() ausgeführte implizite Entsperren möglicher-
     weise den Mutex nicht wirklich freigibt. In diesem Fall kann die
     Bedingung für das Prädikat von keinem anderen Thread erfüllt werden.

     Bei dieser Routine handelt es sich um eine neue Grundfunktion.

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

     EINVAL    Der durch attr angegebene Wert ist ungültig.

     EPERM     Der Aufrufer verfügt nicht über die erforderlichen Berechti-
               gungen.

     ERANGE    Einer oder mehrere der angegebenen Parameter hat/haben einen
               ungültigen Wert.

SIEHE AUCH
     pthreadmutexinit(3-thr), pthreadmutexattrcreate(3-thr),
     pthreadmutexattrgetkindnp(3-thr).































Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

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