#include #include #include #include #include static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; static void *function(void *arg) { pthread_barrier_t *barrier = (pthread_barrier_t *) arg; printf("[child] waiting for parent\n"); pthread_barrier_wait(barrier); printf("[child] barrier signalled!!\n"); return NULL; } int main(int argc, const char **argv) { pthread_t thread; pthread_barrier_t barrier; pthread_barrier_init(&barrier, NULL, 2); printf("[main] will make the child wait on a barrier\n"); assert(pthread_create(&thread, NULL, function, (void *) &barrier) == 0); sleep(3); pthread_barrier_wait(&barrier); printf("[main] barrier signalled!!\n"); pthread_join(thread, NULL); return 0; }