#include #include #include #include #define NUM_THREADS 100 static pthread_t child_thread[NUM_THREADS]; static unsigned long long counters[NUM_THREADS]; static volatile int done; static void * child_function (void *arg) { while (!done) counters[(long) arg]++; // set breakpoint here return NULL; } int main (void) { long i; for (i = 0; i < NUM_THREADS; i++) pthread_create (&child_thread[i], NULL, child_function, (void *) i); sleep (10); done = 1; for (i = 0; i < NUM_THREADS; i++) pthread_join (child_thread[i], NULL); double avg = 0; for (i = 0; i < NUM_THREADS; i++) { printf ("thread %02ld, count %llu\n", i, counters[i]); avg += counters[i]; } double f = avg; f /= NUM_THREADS; printf ("avg %f\n", f); return 0; }