34 lines
830 B
C
34 lines
830 B
C
#include <pthread.h>
|
|
#include <assert.h>
|
|
#include <stdio.h>
|
|
#include <unistd.h>
|
|
#include <sys/yggdrasil.h>
|
|
|
|
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;
|
|
}
|