/* * Przykładowy program dla kursu "POSIX Threads" z wikibooks.pl * * Temat: zakończenie wątku z poziomu funkcji wywływanych w wątku * za pomocą * * Autor: Wojciech Muła * Ostatnia zmiana: 2010-03-xx */
#include<stdlib.h>#include<stdio.h>#include<pthread.h>#include<errno.h>#define test_errno(msg) do{if (errno) {perror(msg); exit(EXIT_FAILURE);}} while(0)voidkoniec_watku(intlicznik,intlimit){inti;for(i=0;i<licznik;i++)putchar(' ');printf("licznik = %d, limit = %d\n",licznik,limit);if(licznik==limit)/* zakończenie wątku w którego kontekście wykonywana jest ta funkcja */pthread_exit(NULL);elsekoniec_watku(licznik+1,limit);}//------------------------------------------------------------------------void*watek(void*arg){koniec_watku(0,5);returnNULL;}//------------------------------------------------------------------------intmain(){pthread_tid;/* utworzenie wątku */errno=pthread_create(&id,NULL,watek,NULL);test_errno("pthread_create");/* oczekiwanie na jego zakończenie */errno=pthread_join(id,NULL);test_errno("pthread_join");returnEXIT_SUCCESS;}//------------------------------------------------------------------------