pthread_mutex_lock(&mutex);
while (locked) {
    pthread_cond_wait(&cond, &mutex);
}
locked = 1;
pthread_mutex_unlock(&mutex);

// do something

pthread_mutex_lock(&mutex);
locked = 0;
pthread_cond_signal(&cond);
pthread_mutex_unlock(&mutex);
