【发布时间】:2014-06-10 19:17:05
【问题描述】:
我在 SO here 上找到了这个:
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 为您执行此操作时,为什么互斥锁会解锁。
【问题讨论】:
标签: multithreading synchronization condition-variable