/* run_thread.c run 4 threads plus master */ #include #include #include #include #include #include #define n_thread 4 #define np 5 static int nb = 0; static double results[n_thread]; static pthread_cond_t go; static pthread_mutex_t bar; static int cfctr = 10000000; /* iteration count */ void barrier(void) { pthread_mutex_lock(&bar); nb++; if(nb == np) { nb = 0; pthread_cond_broadcast(&go); } else { pthread_cond_wait(&go, &bar); } pthread_mutex_unlock(&bar); } /* end barrier */ void * thread_compute(void * threadID) { int i, j, k; double x, y, z; i = (int)threadID; barrier(); /* wait for all to start together */ z = 0.001+(double)i/100.0; for(j=0; j<10; j++) { for(k=0; k