/* Baseado em código de * http://www.csc.villanova.edu/~mdamian/threads/posixsem.html */ #include #include #include #define NITER 1000000000 #define VEZES 5 void * ThreadAdd1 (void * a) { long int count1=0; long int i; for (i=0; i<(long int)VEZES*NITER; i++) count1++; if (count1<(long int)VEZES*NITER) printf("\n OXE! a variavel count1 eh [%li], mas devia ser %li\n", count1, (long int) VEZES*NITER); else printf("\n Ufa! a variavel count1 eh [%li]\n", count1); return NULL; } void * ThreadAdd2 (void * a) { long int count2=0; long int i; for (i=0; i<(long int)VEZES*NITER; i++) count2++; if (count2<(long int)VEZES*NITER) printf("\n OXE! a variavel count2 eh [%li], mas devia ser %li\n", count2, (long int) VEZES*NITER); else printf("\n Ufa! a variavel count2 eh [%li]\n", count2); return NULL; } int main() { pthread_t tid1, tid2; if (pthread_create(&tid1, NULL, ThreadAdd1, NULL)) { printf("\n ERROR creating thread 1"); exit(1); } if (pthread_create(&tid2, NULL, ThreadAdd2, NULL)) { printf("\n ERROR creating thread 2"); exit(1); } if (pthread_join(tid1, NULL)) { printf("\n ERROR joining thread"); exit(1); } if(pthread_join(tid2, NULL)) { printf("\n ERROR joining thread"); exit(1); } return(0); }