让我们看一下下面的代码。假设一个线程看到ready =false 并因此等待条件变量 *mv_cv*,从而释放互斥锁 *my_mutex* 并使自己进入睡眠状态。一段时间后,一些东西会在ready仍然保持值 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);