int main(void) { pthread_t threads[N_THREADS]; int i; init_cpu_counters(); // Barrier initialization if (pthread_barrier_init(&barr, NULL, N_THREADS)) { printf("Could not create the barrier\n"); return -1; } SHARED_OBJECT_INIT(); for (i = 0; i < N_THREADS; i++) threads[i] = StartThread(i); for (i = 0; i < N_THREADS; i++) pthread_join(threads[i], NULL); d2 = getTimeMillis(); printf("time: %d\t", (int) (d2 - d1)); printStats(); #ifdef DEBUG fprintf(stderr, "object counter: %d\n", object_lock.counter); fprintf(stderr, "rounds: %d\n", object_lock.rounds); fprintf(stderr, "Average helping: %f\n", (float)object_lock.counter/object_lock.rounds); #endif if (pthread_barrier_destroy(&barr)) { printf("Could not destroy the barrier\n"); return -1; } return 0; }
int main(void) { SHARED_OBJECT_INIT(); pthread_spin_init(&lock, PTHREAD_PROCESS_SHARED); BarrierInit(&bar, N_THREADS); StartThreadsN(N_THREADS, Execute, _USE_UTHREADS_); JoinThreadsN(N_THREADS); d2 = getTimeMillis(); printf("time: %d (ms)\tthroughput: %.2f (millions ops/sec)\t", (int) (d2 - d1), RUNS*N_THREADS/(1000.0*(d2 - d1))); printStats(N_THREADS); return 0; }
int main(void) { SHARED_OBJECT_INIT(); BarrierInit(&bar, N_THREADS); StartThreadsN(N_THREADS, Execute, _DONT_USE_UTHREADS_); JoinThreadsN(N_THREADS); d2 = getTimeMillis(); printf("time: %d (ms)\tthroughput: %.2f (millions ops/sec)\t", (int) (d2 - d1), RUNS*N_THREADS/(1000.0*(d2 - d1))); printStats(N_THREADS); #ifdef DEBUG fprintf(stderr, "object counter: %d\n", object_lock.counter); fprintf(stderr, "rounds: %d\n", object_lock.rounds); fprintf(stderr, "Average helping: %f\n", (float)object_lock.counter/object_lock.rounds); #endif return 0; }