next up previous
Next: Message Passing Interface - Up: Werkzeuge zum Erstellen paralleler Previous: fork

POSIX Threads

Normalerweise wird ein Programm in nur einem Thread abgearbeitet, d.h. der Ablauf folgt nur einem Pfad durch den Programmcode. Multithread-Programme haben mehrere Threads laufen, die alle ihrem eigenen Pfad durch das Programm folgen.

Ein einfaches Beispiel wäre, daß ein Thread die Berechnungen durchführt, wärend ein anderer Thread auf Interaktionen des Benutzers wartet. Dies kann mittels Threads parallel geschehen, bei einem Programm mit nur einem Tread müßte die Berechnung zwischenzeitlich immer wieder unterbrochen werden, um Benutzereingaben abfragen zu können.

POSIX-Treads sind dabei der Standard, der auf UNIX-basierten Betriebsystemen existiert. Im Gegensatzt zu den Microsoft-style Threads, die für Windows-Rechner entwickelt wurden.

Obwohl POSIX-Threads ein sehr nützliches Werkzeug darstellen, kann ihre Verwendung sehr schnell zu einer komplexen Aufgabe anwachsen.

Ein kleines Beispiel:

/* 
 * pthread.c - ein pthread beispielprogramm
 *
 * oliver schoenbrunner
 *
 * 27.4.1999
 *
 */

#include <stdio.h>

#include <pthread.h>

#define SIZE	4

void *thread_func(void *no);

int main(int argc, char **argv) {

  pthread_t	 thread[SIZE];
  int		 i;
  void		*arg;

  for (i=0; i<SIZE; i++) {
    arg=(void *)malloc(sizeof(int)); *(int *)arg=i;
    pthread_create(&thread[i], NULL, thread_func, arg);
  }

  sleep(3);

  return 0;

}

void *thread_func(void *no) {

  printf("thread # %d\n", *(int *)no);

  return (void *)1;

}




Mail to: Oliver Schönbrunner