/****************************************/ /* */ /* Prof. Dr. Carsten Vogt */ /* TH Koeln, Fakultaet IME */ /* http://www.nt.th-koeln.de/vogt */ /* */ /* Linux-C-Schnittstelle mit pthreads: */ /* pthread_exit(), pthread_join() */ /* */ /****************************************/ // Unter Linux zu uebersetzen mit 'gcc -pthread ...' oder 'cc -pthread ...' #include #include #include #include // Funktion, die der Thread ausführen soll void *schlafe(void *schlafzeit) { static int exitcode = 3; int sz = *(int*)schlafzeit; printf("Thread schlaeft %d Sekunden\n",sz); sleep(sz); // Thread blockiert sich eine Zeit lang printf("Thread fertig\n"); pthread_exit(&exitcode); // Thread beendet sich } // Hauptprogramm int main(int argc, char *argv[]) { int schlafzeit = 2; // Schlafzeit des Threads pthread_t thread_nr; // Nummer des Threads void *status; // Rückkehrstatus des Threads printf("Main erzeugt Thread\n"); pthread_create(&thread_nr, NULL, schlafe, &schlafzeit); printf("Main wartet auf Thread in pthread_join()\n"); pthread_join(thread_nr,&status); printf("Main: Thread beendet mit Status %d\n",*(int*)status); }