条件变量
来源:7-5 线程同步之条件变量

weixin_慕雪2209780
2019-08-06
老师,这个唤醒信号和释放互斥锁的顺序有没有要求啊,有没有啥区别?
先发送信号唤醒线程然后释放锁
还有先唤醒线程再解锁?
还有,这个例子中老师你是先加锁再判断条件是否睡眠,
是不是睡眠了就离开这个临界区了?就相当于解锁状态,其他线程(比如消费者)可以访问这个临界区了?
如果这样满足条件执行了操作后唤醒再解锁是个什么顺序?
不是离开了临界区了还没唤醒呢怎么就可以对临界区操作了?
如果睡眠了没有离开临界区,那么消费者怎么访问的临界区?他不访问,这个临界区不就永远是满的了吗?那不就是死锁了吗?
这节课疑惑很多,希望老师指点一下
写回答
2回答
-
咚咚呛
2019-08-14
这里先说明一下条件变量wait操作的相关内容。
这里,互斥锁是作为变量传递到条件变量的wait操作里面去,而实际上在条件变量相关函数里面的操作里是会将锁释放的,他的具体操作是,把当前线程放到等待条件的队列里面去,然后对互斥量解锁。
而在这个wait函数返回的时候,互斥量会再次锁住,所以才有后面的解锁。
20 -
咚咚呛
2019-08-08
这个问题很好,我找个时间详细回答,这里先mark一下。
112019-08-08
相似问题
关于条件变量
回答 2
在生产者和消费者条件变量中互斥锁的使用
回答 1