POSIX Threads/Przykładowe programy/Program 1

Z Wikibooks, biblioteki wolnych podręczników.
Przejdź do nawigacji Przejdź do wyszukiwania
/*
 *	Przykładowy program dla kursu "POSIX Threads" z wikibooks.pl
 *
 *	Temat: hello world z kilku wątków
 *
 *	Autor: Wojciech Muła
 */
#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)

/* prosta funkcja wykonywana w wątku */
void* watek(void* _arg) {
	puts("Witaj w równoległym świecie!");
	return NULL;
}
//------------------------------------------------------------------------

#define N 5	/* liczba wątków */

int main() {
	pthread_t id[N];
	int i;

	/* utworzenie kilku wątków wątku */
	for (i=0; i < N; i++) {
		errno = pthread_create(&id[i], NULL, watek, NULL);
		test_errno("Nie powiodło się pthread_create");
	}

	/* oczekiwanie na zakończenie wszystkich wątków */
	for (i=0; i < N; i++) {
		errno = pthread_join(id[i], NULL);
		test_errno("pthread_join");
	}

	return EXIT_SUCCESS;
}
//------------------------------------------------------------------------