1#include <pthread.h> 2#include <unistd.h> 3 4static const int NTHREADS = 10; 5static pthread_barrier_t barrier; 6 7static void * 8thread_func (void *p) 9{ 10 pthread_barrier_wait (&barrier); 11 return NULL; 12} 13 14int 15main (void) 16{ 17 alarm (60); 18 19 pthread_t threads[NTHREADS]; 20 pthread_barrier_init (&barrier, NULL, NTHREADS + 2); 21 22 for (int i = 0; i < NTHREADS; i++) 23 pthread_create (&threads[i], NULL, thread_func, NULL); 24 25 pthread_barrier_wait (&barrier); 26 27 for (int i = 0; i < NTHREADS; i++) 28 pthread_join (threads[i], NULL); 29} 30