#include #include #define LOOPS 3000000 #define NTHREADS 8 pthread_mutex_t m; pthread_barrier_t bar; int count; void *thr(void *arg) { int i; pthread_barrier_wait(&bar); for (i = 0; i < LOOPS; ++i) { pthread_mutex_lock(&m); count++; pthread_mutex_unlock(&m); } return (NULL); } int main() { pthread_t td[NTHREADS]; int i; pthread_mutex_init(&m, NULL); pthread_barrier_init(&bar, NULL, NTHREADS+1); for (i = 0; i < NTHREADS; ++i) pthread_create(&td[i], NULL, thr, NULL); pthread_barrier_wait(&bar); for (i = 0; i < NTHREADS; ++i) pthread_join(td[i], NULL); pthread_mutex_destroy(&m); return (0); }