/* gcc -o mkthreads mkthreads.c -lpthread -lm */ #include #include #include #include #include int n; int barrier=1; #if 0 void *thread_fn(void *arg) { int i = (int) arg; int j = 0; int k; printf("%d starting\n", i); for (k=0; k<100000000 ; k++) { usleep(1); for (j=0;j<1000000000;j++) i += j+j-2*j; } printf("%d ending %d\n", j); } #endif void *slow_exit(void *arg) { int i = (int) arg; // printf("%d starting\n", i); usleep((n-i)*2); // while (barrier) // usleep(500); // printf("%d ending\n", i); } int main(int argc, char *argv[]) { int i,rc, rep; pthread_t *ppthread; n = 5 ; if (argc > 1) n = atoi(argv[1]); rep = 10; if (argc > 2) rep = atoi(argv[2]); ppthread = malloc(n * sizeof(pthread_t)); if (ppthread == NULL) { printf("Memory allocation failure\n"); exit(-1); } while (rep) { // printf("%d Create threads\n", rep); for (i=0; i