条件变量为什么要和互斥锁一起用???

参考链接https://blog.csdn.net/shichao1470/article/details/89856443

pthread_cond_wait内部会解锁,然后等待条件变量被其它线程激活

看一种情况

int sig = 0;
void p1()
{
    if (sig == 0) 
    pthread_cond_wait();
}

void p2()
{
    sig = 1;
}

有一种如下的情况

p1: if (sig == 0)
p2: sig = 2;
p1: wait

显然冲突了

所以要在访问条件变量的时候加锁

关于pthread_cond_wait():为什么使用后要马上解锁?

pthread_cond_signal(&ready);
pthread_mutex_unlock(&mutex);

在这里插入图片描述

pthread_cond_wait()的内部有一个加锁操作!!!!!!!!!!!

不释放锁的话pthread_cond_wait不会返回...

发布了81 篇原创文章 · 获赞 4 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/m0_37313888/article/details/105150567