#include #include #define THREADS 500000 void * worker(void *arg) { sleep(5000); pthread_exit(NULL); } int main(void) { int i, error; pthread_t *thr; pthread_attr_t attr; if ((thr = malloc(THREADS * sizeof(pthread_t))) == NULL) err(-1, "malloc"); pthread_attr_init(&attr); if ((error = pthread_attr_setstacksize(&attr, 2048)) != 0) errc(-1, error, "setstacksize"); for (i = 0; i < THREADS; i++) { if (pthread_create(&thr[i], NULL, worker, NULL) != 0) err(-1, "pthread_create[%d]", i); } printf("done creating\n"); for (i = 0; i < THREADS; i++) { if (pthread_join(thr[i], NULL) != 0) err(-1, "pthread_join[%d]", i); } return (0); }