6 Flag *flag = malloc(sizeof *flag);
8 pthread_cond_init(&flag->cv, NULL);
9 pthread_mutex_init(&flag->mtx, NULL);
13 void flag_delete(Flag *flag)
15 pthread_cond_destroy(&flag->cv);
16 pthread_mutex_destroy(&flag->mtx);
20 void flag_wait(Flag *flag)
22 pthread_mutex_lock(&flag->mtx);
24 pthread_cond_wait(&flag->cv, &flag->mtx);
25 pthread_mutex_unlock(&flag->mtx);
28 void flag_set(Flag *flag)
30 pthread_mutex_lock(&flag->mtx);
32 pthread_cond_broadcast(&flag->cv);
33 pthread_mutex_unlock(&flag->mtx);