bool flag=false;
pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cond=PTHREAD_COND_INITIALIZER;
void function1()
{
pthread_mutex_lock(&mutex);
while(!flag)
{
//#2
pthread_cond_wait(&cond,&mutex);
}
pthread_mutex_unlock(&mutex);
}
void function2()
{
flag=true;
pthread_cond_signal(&cond);
}
这是情况。两个线程:thread1 和 thread2 分别运行在 function1 和 function2 上。
由于 CPU 调度,thread1 在 #2 处停止。
thread2 开始执行并将标志更改为 true。
thread1 开始等待,但它会永远等待。
当我想在不锁定互斥锁的情况下通知其他线程时如何避免这种情况。