/* Tijana Stevanovic, Milutin Aleksic, Dragutin Ostojic, 20222. */ #include #include #include #include #include #define N 3 pthread_barrier_t barrier; int novcici[3]; void *work(void *i) { long tid = (long)i; while(1) { novcici[tid] = rand() % 2; printf("%ld: %d\n", tid, novcici[tid]); pthread_barrier_wait(&barrier); int sum = novcici[0] + novcici[1] + novcici[2]; if(sum == 1 || sum == 2) { if(novcici[tid] != novcici[(tid + 1) % 3] && novcici[tid] != novcici[(tid + 2) % 3]) printf("%ld: Izabran sam\n", tid); else printf("%ld: Nisam izabran\n", tid); break; } printf("%ld: Nisam izabran\n", tid); pthread_barrier_wait(&barrier); } pthread_exit(NULL); } int main() { pthread_t threads[N]; srand(time(NULL)); pthread_barrier_init(&barrier, NULL, N); for(long i = 0; i < N; i++) { pthread_create(threads + i, NULL, work, (void*)i); } pthread_exit(NULL); }