死锁情况

在多线程中,发生死锁的情况主要有一下几种:
1、系统资源不足
2、线程之间的执行顺序不合理
3、系统的资源分配不当
举个简单的例子,线程A拥有资源1的锁,在未释放资源1的锁的情况下,申请资源2 的锁;线程B拥有资源2的锁,在未释放锁的情况下申请资源1的锁,结果两者都没有呢释放自己资源的锁,都要申请对方资源的锁,在这种情况下,就会发生死锁,若没有外界条件的推动,程序很难进行下去。

产生死锁的条件:
1、互斥性:一个资源一次只能被一个线程占用;
2、请求与保持条件:一个线程因请求资源而阻塞时,对已获得的资源保持不放;
3、不剥夺条件:线程已获得的资源,在末使用完之前,不能强行剥夺;
4、循环等待条件:若干线程之间形成一种头尾相接的循环等待资源关系;
满足这四个条件会发生死锁,在具体的程序设计中,我们要合理的分配资源和线程的执行顺序,确保死锁不发生。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值