为什么在等待条件变量时需要while循环
说你有这个代码
pthread_mutex_lock(&cam->video_lock);while(cam->status == WAIT_DISPLAY) // <-- Why is this a 'while' and not an 'if'?
pthread_cond_wait(&cam->video_cond, &cam->video_lock);
pthread_mutex_unlock(&cam->video_lock);
我的问题是,为什么您需要在此处进行while循环。
信号吗?好的,我知道您可能会遇到以下情况:调用 时 不等于
,但是在那种情况下,您可以通过 条件检查它,而不是使用 。 *
我在这里想念什么吗?我对 理解是,如果未发出
信号,它将仅等待无限。此外,它在被调用时会解锁 互斥锁,但是当发出条件信号时,它将在返回之前重新锁定
。我对吗?
回答:
建议所有线程从
返回后检查条件,因为有多种原因可能导致条件不成立。这些原因之一是虚假唤醒。也就是说,即使没有线程发出信号通知该情况,线程也可能被唤醒。
以上是 为什么在等待条件变量时需要while循环 的全部内容, 来源链接: utcz.com/qa/428132.html