pthread_cond_waitはなぜmutexを引数にとるのか

pthread_cond_wait ではmutexロック掛けてそれを引数にしなければならない.
そしてその同一のmutex変数を使って対になるpthread_cond_signalでもロックを掛ける必要がある. こんな感じ.

#include <pthread.h>                                                            
#include <stdio.h>     

pthread_mutex_t mutex;
pthread_cond_t cond;
                                                                                
void *thread_A(void *arg) {    
    pthread_mutex_lock(&mutex);
    pthread_cond_wait(&cond, &mutex);
    pthread_mutex_unlock(&mutex);
}

void *thread_B(void *arg) {    
    pthread_mutex_lock(&mutex);
    pthread_cond_signal(&cond);
    pthread_mutex_unlock(&mutex);
}

なぜmutexを引数にとるのかというと, 条件変数condにpthread_cond_waitとpthread_cond_signalの両方がアクセスするので,その同期をとるためである. 詳しくはここを見る.