Standard zur expliziten Programmierung von Threads: POSIX 1003.c
definiert
Routinen für
Thread-Erzeugung und -Vernichtung
Thread-Synchronisation
Informations-Funktionen
Thread-Version in C
(Source):
explizite Erzeugung von Threads mit
pthread_create(&thread_id, NULL, par_loop, args);
alle neuen Threads führen par_loop(args) aus
warten am Ende aufeinander und terminieren
Master-Thread wartet auf die anderen mit
pthread_join(thread_id, NULL);
alle lokalen Variablen von par_loop (und darunter) sind thread-lokal
Bemerkungen:
Aufteilung der Schleife auf Threads:
Trick, um eindeutige Nummern für die Threads zu erzeugen:
Jeder bekommt seine Nummer als Argument myarg_p->myid
Vorsicht: Jeder Thread muß beim pthread_create einen Pointer auf seinen eigenen Argument-Bereich haben, sonst kann folgende Race-Condition auftreten:
Master Thread 1
-------------------------------------------------------
packe Argument 1
starte Thread 1
Thread 1 startet
packe Argument 2
Thread 1 liest seine Argumente -
inzwischen schon die für Thread 2!
Laufzeiten:
| CPUs | 1 | 2 | 4 | 8 |
| Zeit/s | 69.1 | 34.5 | 17.3 | 8.8 |
| Speedup | 1 | 2.0 | 4.0 | 7.9 |
Weitere Informationen im Kurs
Parallelprogrammierung mit POSIX-Threads
![]()