void mrevent_wait(struct mrevent *ev) {
pthread_mutex_lock(&ev->mutex);
while (!ev->triggered)
pthread_cond_wait(&ev->cond, &ev->mutex);
pthread_mutex_unlock(&ev->mutex);
}
的手冊頁賽斯:
的調用pthread_cond_wait()和那麼pthread_cond_timedwait()函數用於在條件變量阻塞。它們被調用線程鎖定的互斥鎖調用,否則會導致未定義的行爲。
這些函數以原子方式釋放互斥鎖並導致調用線程在條件變量cond上阻塞;
那麼在每次調用pthread_cond_wait
之前都不應該捕獲互斥鎖。另外,爲什麼在手冊頁中解釋了互斥體,pthread_cond_wait爲您做了這些。