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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© kongling 中级黑马   /  2013-12-5 14:24  /  1212 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 kongling 于 2013-12-5 17:58 编辑

死锁产生的条件?如何避免?有什么原则?

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

3 个回复

倒序浏览
死锁:同步嵌套同步
D:\Documents\Desktop\1.jpg
死锁产生的条件
(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
避免死锁
通过建立获取锁定的顺序,可以避免这种死锁。当所有线程始终按指定的顺序获取锁定时,即可避免这种死锁。
死锁原则
1.请勿尝试在可能会对性能造成不良影响的长时间操作(如 I/O)中持有锁。
2.请勿在调用模块外且可能重进入模块的函数时持有锁。
3.一般情况下,请先使用粗粒度锁定方法,确定瓶颈,并在必要时添加细粒度锁定来缓解瓶颈。大多数锁定都是短期持有,而且很少出现争用。因此,请仅修复测得争用的那些锁定。
4.使用多个锁定时,通过确保所有线程都按相同的顺序获取锁定来避免死锁。

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
回复 使用道具 举报
简单的说就是你拿着使用权没放,而我也拿着使用权不放,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马