我想知道while等待线程被唤醒后会发生什么。
为了避免“虚假唤醒”,pthreads文档指出您需要pthread_cond_wait在while语句中使用。
因此,当pthread_cond_wait调用 时,调用线程被阻塞。发出信号后,线程在while.
在我的代码中,我正在处理pthread_cond_wait()这种方式:
pthread_mutex_lock(&waiting_call_lock);
while(1) {
pthread_cond_wait(&queue_cond[thread_ctx], &waiting_call_lock);
break;
}
pthread_mutex_unlock(&waiting_call_lock);
问题是,它会尝试再次进入一段时间,还是以某种方式进入一段break时间并继续?或者,在那种情况下,break之后pthread_cond_wait()是必要的?