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为您做了这些。