// Szablon programu operujacego watkami
// kompilacja: gcc -o watki1 watki1.c -lpthread

#include <pthread.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>

int NR=0;
char buf[100];
void *Ogrodnik1() {
int i;

for (i=0; i<5; i++)
{
	sprintf(buf,"Ogrodnik1: %i\n",NR);
	write(STDOUT_FILENO, buf, strlen(buf));
	NR = NR++;
};

pthread_exit(0);
}

void *Ogrodnik2() {
int q;

for (q=0; q<5; q++)
{
	sprintf(buf,"Ogrodnik2: %i\n",NR);
	write(STDOUT_FILENO, buf, strlen(buf));
	NR = NR++;
};

pthread_exit(0);
}


void *Ogrodnik3() {
int r;

for (r=0; r<5; r++)
{
	sprintf(buf,"Ogrodnik3: %i\n",NR);
	write(STDOUT_FILENO, buf, strlen(buf));
	NR = NR++;
};

pthread_exit(0);
}

main( ) 
{
int k, l, m;
pthread_t tid;
pthread_attr_t attr;


if ( k = pthread_create( &tid , NULL, Ogrodnik1, NULL ) ) 
{
	fprintf( stderr, "BLAD: %s\n", strerror( k ) );
	return 1;
}


if ( l = pthread_create( &tid, NULL, Ogrodnik2, NULL ) ) 
{
	fprintf( stderr, "BLAD: %s\n", strerror( l ) );
	return 1;
}


if ( m = pthread_create( &tid, NULL, Ogrodnik3, NULL ) ) 
{
	fprintf( stderr, "BLAD: %s\n", strerror( m ) );
	return 1;
}

if ( k = pthread_join( tid, NULL ) ) { 
	fprintf( stderr, "BLAD: %s\n", strerror( k ) );
	return 1;
}

return 0;
}


