2
让我们来看看下面的代码。 假设一个线程看到准备好 = false,因此等待条件变量* mv_cv *,因此释放互斥量* my_mutex *并将自己置于睡眠状态。 一段时间后,虚假地将线程唤醒,而准备好仍然保留值为false。我的问题是: 线程现在是否在唤醒之前通过重新获取互斥锁来保持互斥锁* my_mutex *?线程是否存在虚假唤醒的相应互斥量?
pthread_mutex_lock(&my_mutex);
while (!ready)
{
pthread_cond_wait(&my_cv, &my_mutex);
}
//some operation goes here
pthread_mutex_unlock(&my_mutex);
贺'虚假的唤醒是一种成功的回报'。我明白你在说什么,但它仍然听起来像是在文件系统文档中的警告:“注 - 可能偶尔打开错误的文件。 –