线程的死锁

死锁的必要条件:

1. 互斥: 每个资源要么已经分配给了一个进程,要么就是可用的;

2. 占有和等待:已经得到了某个资源的进程可以再请求新的资源。

3. 不可抢占:已经分配给一个进程的资源不能强制性的被抢占,它只能被占有他的进程显式的释放;

4. 环路等待: 有两个或者两个以上的进程组成一条环路,该环路中的每个进程都在等待下一个进程所占有的资源。

处理死锁的方法:

1. 鸵鸟策略:就是忽略死锁,假装什么都没有发生。

死锁的检测:

    每种类型一个资源的死锁检测算法是通过检测有向图是否存在闭环来实现的,从一个节点出发进行深度优先搜索,对访问的节点进行标记,如果访问了已经访问的节点,就表示有向图存在闭环,也就是检测到死锁的发生。


死锁的恢复

1. 利用抢占恢复

2. 利用回滚恢复

3. 通过杀死进程恢复


死锁的预防

1. 破坏互斥条件

2. 破坏占有和等待条件

3. 破坏不可抢占条件

4. 破坏环路等待


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值