A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lily 黑马帝   /  2011-9-10 14:00  /  1740 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在多线程同步的过程中,有一个死锁问题。即监视器都处于运行状态,且都在等待其他未释放的监视器,造成死锁。
比如:A,B两个监视器,如果A,B都在运行状态,且A中需要获得监视器B,B中也需要获得监视器A,由于两个同步代码块都需要等待对方而无法释放监视器,造成死锁。遇到这种清况,是否可以检测正在等待的监视器状态,若长时间得不到等待的监视器,就释放当前监视器来解决死锁问题?
比如:A在等待B监视器的过程中,长时间得不到B监视器,就放弃A监视器进入睡眠状态呢?

4 个回复

倒序浏览
黑马网友  发表于 2011-9-10 20:02:31
沙发
可以吧,怎么实现我也不清楚。
回复 使用道具 举报
黑马网友  发表于 2011-9-10 20:17:27
藤椅
其实你不用自己创出一个解决死锁的办法
参考大学教材《操作系统》一书中的PV操作,引进信号量的机制就可以在理论上避免死锁

这个是 链接【[url]http://baike.baidu.com/view/703687.htm[/url]】
回复 使用道具 举报
黑马网友  发表于 2011-9-11 02:29:08
板凳
深奥!!没写过这样的死锁代码
回复 使用道具 举报
黑马网友  发表于 2011-9-11 13:48:33
报纸
这样又引入新的问题,可出现,当两个线程都得不到监视器,同时都放弃了监视器,转入睡眠不是又死锁了.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马