请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

signal不会释放锁,那么此时唤醒其他线程,被唤醒线程会自旋等待锁吗?

wait会释放互斥锁让出CPU,当被signal唤醒时,如果无法立即拿到锁,此时这个线程是处于什么状态?是自旋等待吗(毕竟已经唤醒了呢,会占用CPU资源吗)?

producer伪代码片段如下:

lock();
while(num > MAX){
	wait();
}
num += 1;
signal();
sleep(10); //不让被唤醒的消费线程立即拿到锁
unlock();

正在回答 回答被采纳积分+3

1回答

咚咚呛 2020-06-17 00:06:41

这里的伪代码是不成立的哈,使用条件变量需要在两个线程或者以上的线程数的环境去运行,如果这里面等待了的话,那肯定不会执行到后面的唤醒的逻辑。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信