thr_intro(3-thr) thr_intro(3-thr)
NAME
thrintro - Einführung in DCE Threads
BESCHREIBUNG
DCE Threads umfaßt einen Satz von Routinen, die zum Erstellen eines
Multithread-Programms aufgerufen werden können. Multithreading wird
zur Verbesserung der Leistung eines Programms verwendet. Von DCE
Threads implementierte Routinen, die im Entwurf 4 des POSIX-Standards
1003.4a nicht aufgeführt sind, sind durch das Suffix np im Namen
gekennzeichnet. Bei diesen Routinen handelt es sich um neue Grundfunk-
tionen.
Die Threads-Routinen sind auf den Referenzseiten in alphabetischer
Reihenfolge sortiert; in den Tabellen in vorliegender Einführung sind
die Routinen dagegen nach folgenden Funktionsgruppen sortiert:
- Threads-Routinen
- Routinen, die das Threads-Paket implizit initialisieren
- Routinen zu Attributobjekten
- Mutex-Routinen
- Routinen zu Condition-Variablen
- Routinen zu thread-spezifischen Daten
- Threads-Abbruchroutinen
- Prioritäts- und Scheduling-Routinen für Threads
- Bereinigungsroutinen
- Die Routine atfork()
- Signalbehandlungsroutinen
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
thr_intro(3-thr) thr_intro(3-thr)
ROUTINEN
______________________________________________________________________
| Threads-Routinen |
|_______________________________|_____________________________________|
| Routine | Beschreibung |
|_______________________________|_____________________________________|
| pthreadcreate() | Einen Thread erstellen |
|_______________________________|_____________________________________|
| pthreaddelaynp() | Veranlassen, daß ein Thread eine |
| | bestimmte Zeit wartet |
|_______________________________|_____________________________________|
| pthreaddetach() | Einen Thread zum Löschen markieren |
|_______________________________|_____________________________________|
| pthreadequal() | Zwei Thread-IDs miteinander ver- |
| | gleichen |
|_______________________________|_____________________________________|
| pthreadexit() | Den aufrufenden Thread beenden |
|_______________________________|_____________________________________|
| pthreadjoin() | Veranlassen, daß der aufrufende |
| | Thread auf die Beendigung eines |
| | angegebenen Thread wartet |
|_______________________________|_____________________________________|
| pthreadonce() | Eine Initialisierungsroutine zur |
| | einmaligen Ausführung aufrufen |
|_______________________________|_____________________________________|
| pthreadself() | Die ID des aktuellen Thread abrufen|
|_______________________________|_____________________________________|
| pthreadyield() | Den Scheduler darüber informieren, |
| | daß der aktuelle Thread seinen Pro-|
| | zessor an andere Threads mit glei- |
| | cher oder höherer Priorität frei- |
| | gibt |
|_______________________________|_____________________________________|
Beim Aufrufen der folgenden DCE Threads-Routinen führen diese implizit
eine eventuell erforderliche Initialisierung des Threads-Pakets durch.
Jede Anwendung, die DCE Threads verwendet, sollte also zunächst eine
der folgenden Routinen aufrufen, bevor andere Threads-Routinen aufge-
rufen werden, um zu gewährleisten, daß das Paket korrekt initialisiert
wird.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
thr_intro(3-thr) thr_intro(3-thr)
______________________________________________________________________
| Routinen, die Threads implizit initialisieren |
|_______________________________|_____________________________________|
| Routine | Beschreibung |
|_______________________________|_____________________________________|
| pthreadattrcreate() | Ein Objekt für Thread-Attribute |
| | erstellen |
|_______________________________|_____________________________________|
| pthreadcreate() | Einen Thread erstellen |
|_______________________________|_____________________________________|
| pthreadself() | Die ID des aktuellen Thread abrufen|
|_______________________________|_____________________________________|
| pthreadsetprio() | Das Attribut für die Scheduling- |
| | Priorität ändern |
|_______________________________|_____________________________________|
| pthreadgetprio() | Das Attribut für die Scheduling- |
| | Priorität abrufen |
|_______________________________|_____________________________________|
| pthreadsetscheduler() | Das Attribut für die Scheduling- |
| | Strategie ändern |
|_______________________________|_____________________________________|
| pthreadgetscheduler() | Das Attribut für die Scheduling- |
| | Strategie abrufen |
|_______________________________|_____________________________________|
| pthreadonce() | Eine Initialisierungsroutine zur |
| | einmaligen Ausführung aufrufen |
|_______________________________|_____________________________________|
| pthreadkeycreate() | Einen eindeutigen Schlüsselwert für|
| | thread-spezifische Daten generieren|
|_______________________________|_____________________________________|
| pthreadmutexattrcreate() | Ein Objekt für Mutex-Attribute |
| | erstellen |
|_______________________________|_____________________________________|
| pthreadmutexinit() | Einen Mutex erstellen |
|_______________________________|_____________________________________|
| pthreadcondattrcreate() | Ein Objekt für die Attribute von |
| | Condition-Variablen erstellen |
|_______________________________|_____________________________________|
| pthreadcondinit() | Eine Condition-Variable erstellen |
|_______________________________|_____________________________________|
| pthreadtestcancel() | Übergabe eines zur Verarbeitung |
| | anstehenden Abbruchs anfordern |
|_______________________________|_____________________________________|
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
thr_intro(3-thr) thr_intro(3-thr)
______________________________________________________________________
| Routinen, die Threads implizit initialisieren |
|_______________________________|_____________________________________|
| Routine | Beschreibung |
|_______________________________|_____________________________________|
| pthreadsetcancel() | Die allgemeine Abbruchmöglichkeit |
| | des aktuellen Thread |
| | aktivieren/deaktivieren |
|_______________________________|_____________________________________|
| pthreadsetasynccancel() | Die asynchrone Abbruchmöglichkeit |
| | des aktuellen Thread |
| | aktivieren/deaktivieren |
|_______________________________|_____________________________________|
| pthreaddelaynp() | Veranlassen, daß ein Thread eine |
| | bestimmte Zeit wartet |
|_______________________________|_____________________________________|
______________________________________________________________________
| Routinen zu Attributobjekten |
|_______________________________|_____________________________________|
| Routine | Beschreibung |
|_______________________________|_____________________________________|
| pthreadattrcreate() | Ein Objekt für Thread-Attribute |
| | erstellen |
|_______________________________|_____________________________________|
| pthreadattrdelete() | Ein Objekt für Thread-Attribute |
| | löschen |
|_______________________________|_____________________________________|
| pthreadattrgetinheritsched()| Das Attribut zur Übernahme des |
| | Scheduling abrufen |
|_______________________________|_____________________________________|
| pthreadattrgetprio() | Das Attribut für die Scheduling- |
| | Priorität abrufen |
|_______________________________|_____________________________________|
| pthreadattrgetsched() | Das Attribut für die Scheduling- |
| | Strategie abrufen |
|_______________________________|_____________________________________|
| pthreadattrgetstacksize() | Das Attribut für die Stack-Größe |
| | abrufen |
|_______________________________|_____________________________________|
| pthreadattrsetinheritsched()| Das Attribut zur Übernahme des |
| | Scheduling ändern |
|_______________________________|_____________________________________|
| pthreadattrsetprio() | Das Attribut für die Scheduling- |
| | Priorität ändern |
|_______________________________|_____________________________________|
| pthreadattrsetsched() | Das Attribut für die Scheduling- |
| | Strategie ändern |
|_______________________________|_____________________________________|
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
thr_intro(3-thr) thr_intro(3-thr)
______________________________________________________________________
| Routinen zu Attributobjekten |
|_______________________________|_____________________________________|
| Routine | Beschreibung |
|_______________________________|_____________________________________|
| pthreadattrsetstacksize() | Das Attribut für die Stack-Größe |
| | ändern |
|_______________________________|_____________________________________|
| pthreadcondattrcreate() | Ein Objekt für die Attribute von |
| | Condition-Variablen erstellen |
|_______________________________|_____________________________________|
| pthreadcondattrdelete() | Ein Objekt für die Attribute von |
| | Condition-Variablen löschen |
|_______________________________|_____________________________________|
| pthreadmutexattrcreate() | Ein Objekt für Mutex-Attribute |
| | erstellen |
|_______________________________|_____________________________________|
| pthreadmutexattrdelete() | Ein Objekt für Mutex-Attribute |
| | löschen |
|_______________________________|_____________________________________|
| pthreadmutexattrgetkindnp()| Das Attribut für den Mutex-Typ |
| | abrufen |
|_______________________________|_____________________________________|
| pthreadmutexattrsetkindnp()| Das Attribut für den Mutex-Typ |
| | ändern |
|_______________________________|_____________________________________|
______________________________________________________________________
| Mutex-Routinen |
|_______________________________|_____________________________________|
| Routine | Beschreibung |
|_______________________________|_____________________________________|
| pthreadlockglobalnp() | Einen globalen Mutex sperren |
|_______________________________|_____________________________________|
| pthreadmutexdestroy() | Einen Mutex löschen |
|_______________________________|_____________________________________|
| pthreadmutexinit() | Einen Mutex erstellen |
|_______________________________|_____________________________________|
| pthreadmutexlock() | Einen Mutex sperren und warten, |
| | wenn der Mutex bereits gesperrt ist|
|_______________________________|_____________________________________|
| pthreadmutextrylock() | Einen Mutex sperren und die Routine|
| | beenden, wenn der Mutex bereits |
| | gesperrt ist |
|_______________________________|_____________________________________|
| pthreadmutexunlock() | Einen Mutex entsperren |
|_______________________________|_____________________________________|
| pthreadunlockglobalnp() | Einen globalen Mutex entsperren |
|_______________________________|_____________________________________|
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98
thr_intro(3-thr) thr_intro(3-thr)
______________________________________________________________________
| Routinen zu Condition-Variablen |
|_______________________________|_____________________________________|
| Routine | Beschreibung |
|_______________________________|_____________________________________|
| pthreadcondbroadcast() | Alle Threads, die auf eine |
| | Condition-Variable warten, aktivie-|
| | ren |
|_______________________________|_____________________________________|
| pthreadconddestroy() | Eine Condition-Variable löschen |
|_______________________________|_____________________________________|
| pthreadcondinit() | Eine Condition-Variable erstellen |
|_______________________________|_____________________________________|
| pthreadcondsignal() | Einen Thread aktivieren, der auf |
| | eine Condition-Variable wartet |
|_______________________________|_____________________________________|
| pthreadcondtimedwait() | Veranlassen, daß ein Thread eine |
| | bestimmte Zeit auf das Signalisie- |
| | ren oder Broadcasting einer Condi- |
| | tion-Variable wartet |
|_______________________________|_____________________________________|
| pthreadcondwait() | Veranlassen, daß ein Thread auf das|
| | Signalisieren oder Broadcasting |
| | einer Condition-Variable wartet |
|_______________________________|_____________________________________|
| pthreadgetexpirationnp() | Einen Wert für eine gewünschte |
| | Ablaufzeit abrufen |
|_______________________________|_____________________________________|
______________________________________________________________________
| Thread-spezifische Daten |
|_______________________________|_____________________________________|
| Routine | Beschreibung |
|_______________________________|_____________________________________|
| pthreadgetspecific() | Die dem angegebenen Schlüssel |
| | zugeordneten thread-spezifischen |
| | Daten abrufen |
|_______________________________|_____________________________________|
| pthreadkeycreate() | Einen eindeutigen Schlüsselwert für|
| | thread-spezifische Daten generieren|
|_______________________________|_____________________________________|
| pthreadsetspecific() | Die dem angegebenen Schlüssel |
| | zugeordneten thread-spazifischen |
| | Daten festlegen |
|_______________________________|_____________________________________|
Seite 6 Reliant UNIX 5.44 Gedruckt 11/98
thr_intro(3-thr) thr_intro(3-thr)
______________________________________________________________________
| Threads-Abbruchroutinen |
|_______________________________|_____________________________________|
| Routine | Beschreibung |
|_______________________________|_____________________________________|
| pthreadcancel() | Zulassen, daß ein Thread den |
| | Abbruch anfordert |
|_______________________________|_____________________________________|
| pthreadsetasynccancel() | Die asynchrone Abbruchmöglichkeit |
| | des aktuellen Thread |
| | aktivieren/deaktivieren |
|_______________________________|_____________________________________|
| pthreadsetcancel() | Die allgemeine Abbruchmöglichkeit |
| | des aktuellen Thread |
| | aktivieren/deaktivieren |
|_______________________________|_____________________________________|
| pthreadsignaltocancelnp() | Einen Thread abbrechen, wenn vom |
| | Prozeß ein Signal empfangen wird |
|_______________________________|_____________________________________|
| pthreadtestcancel() | Die Übergabe eines zur Verarbeitung|
| | anstehenden Abbruchs anfordern |
|_______________________________|_____________________________________|
______________________________________________________________________
| Prioritäts- und Scheduling-Routinen für Threads |
|_______________________________|_____________________________________|
| Routine | Beschreibung |
|_______________________________|_____________________________________|
| pthreadgetprio() | Die aktuelle Priorität eines Thread|
| | abrufen |
|_______________________________|_____________________________________|
| pthreadgetscheduler() | Die aktuelle Scheduling-Strategie |
| | eines Thread abrufen |
|_______________________________|_____________________________________|
| pthreadsetprio() | Die aktuelle Priorität eines Thread|
| | ändern |
|_______________________________|_____________________________________|
| pthreadsetscheduler() | Die aktuelle Scheduling-Strategie |
| | und Priorität eines Thread ändern |
|_______________________________|_____________________________________|
______________________________________________________________________
| Bereinigungsroutinen |
|_______________________________|_____________________________________|
| Routine | Beschreibung |
|_______________________________|_____________________________________|
| pthreadcleanuppop() | Eine Bereinigungsroutine aus dem |
| | Stack entfernen |
|_______________________________|_____________________________________|
| pthreadcleanuppush() | Eine Bereinigungsroutine einrichten|
|_______________________________|_____________________________________|
Seite 7 Reliant UNIX 5.44 Gedruckt 11/98
thr_intro(3-thr) thr_intro(3-thr)
______________________________________________________________________
| Die Routine atfork() |
|_______________________________|_____________________________________|
| Routine | Beschreibung |
|_______________________________|_____________________________________|
| atfork() | Bei Erzeugung eines neuen Prozesses|
| | verwendete Bereinigungsroutinen |
|_______________________________|_____________________________________|
______________________________________________________________________
| Signalbehandlungsroutinen |
|_______________________________|_____________________________________|
| Routine | Beschreibung |
|_______________________________|_____________________________________|
| sigaction() | Die bei Empfang eines Signals aus- |
| | zuführende Aktion angeben |
|_______________________________|_____________________________________|
| sigpending() | Unbearbeitete Signale prüfen |
|_______________________________|_____________________________________|
| sigprocmask() | Die aktuelle Signalmaske angeben |
|_______________________________|_____________________________________|
| sigwait() | Veranlassen, daß der Thread auf ein|
| | asynchrones Signal wartet |
|_______________________________|_____________________________________|
Seite 8 Reliant UNIX 5.44 Gedruckt 11/98