线程死锁

什么是死锁

线程A需要资源X,而线程B需要资源Y,而双方都掌握有对方所要的资源,这种情况称为死锁。

死锁产生的4个必要条件是什么

1.互斥:存在这样一种资源,它在某个时刻只能被分配给一个执行绪(也称为线程)使用;
2.请求与保持:当请求的资源已被占用从而导致执行绪阻塞时,资源占用者不但无需释放该资源,而且还可以继续请求更多资源;
3.不抢占和不剥夺:执行者执行完成前不可被剥夺资源,只有资源占用者自己才能释放资源;
4.循环和等待:若干执行绪以不同的次序获取互斥资源,从而形成环形等待的局面,想象在由多个执行绪组成的环形链中,每个执行绪都在等待下一个执行绪释放它持有的资源。

如何避免死锁,常见算法与原理。

只要上述四个条件中的一个不满足,就可以避免死锁,因此在分配系统资源时,应合理分配。
银行家算法思想:
银行家算法要求每个进程的最大资源需求,其基本思想是:始终保持系统处于安全状态,当进程提出资源请求时,系统先进行预分配,再判断系统分配后是否仍然处于安全状态。如果仍然处于安全状态,就进行实际分配;如果处于不安全状态,则拒绝该进程的资源请求。
相关数据结构:
1.最大需求矩阵:
这里写图片描述
其中行表示进程,列表示资源。
2.资源分配矩阵:a(t)
3.需求矩阵:b(t)
最大需求矩阵 = 分配矩阵 + 需求矩阵

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值