死锁篇纪实

目录

1、死锁

死锁的4个条件:

死锁的处理方式:预防死锁,避免死锁,检测死锁,解除死锁;

预防死锁:

避免死锁:

检测死锁:

解除死锁:

如何避免死锁:

在单核机器上写多线程程序是否考虑加锁


1、死锁

多并法进程因争夺系统资源而产生的相互等待的现象;

本质:1、资源有限;2、进程推进顺序不合理;

死锁的4个条件:

1、互斥:涉及的资源是非共享的。

2、占有且等待:进程每次申请它所需要的一部分资源,在等待新资源的同时继续占用已分配到的资源。

3、不可剥夺:进程所获得的资源在未使用完毕之前不能被其它进程强行夺走。

4、循环等待:存在着一种进程的循环链,链中的每一个进程已获得的资源同时被链中的下一个进程请求。

死锁的处理方式:预防死锁,避免死锁,检测死锁,解除死锁;

预防死锁:

                1、资源一次性分配(破坏请求和保持条件)

                 2、可剥夺资源(当进程的资源为满足时,释放已占有资源)(破坏不可剥夺条件)

                 3、资源有序分配法(给每个资源赋予一个编号,按照编号顺序请求资源)(破坏循环                           等待条件)

                 4、若该进程一个请求得不到满足,则剥夺他的所有条件(破坏占有且等待条件)

避免死锁:

                系统在进行资源分配时,先计算资源分配的安全性,若分配会导致系统进入不安全状态,则取消此次资源分配。(银行家算法)

检测死锁:

                为每个进程和资源分配唯一一个号码,然后建立资源分配表和进程等待表;

解除死锁:

                在检测到死锁发生以后,可以采用一下两个方面解除死锁:

1、剥夺资源:从其他进程剥夺足够多的资源分配给死锁进程,以解除死锁状态;

2、撤销进程:可以撤销死锁进程,直到有足够的资源可用。

如何避免死锁:

一般来说有三种用于避免死锁的技术:

1、加锁顺序:(线程按照一定的顺序加锁)

2、加锁时限:(超过时限就放弃该锁的请求,并释放自己占有对的锁)

3、死锁检测

在单核机器上写多线程程序是否考虑加锁

        在单核机器上写多线程程序依旧要加锁,线程锁是用于实现线程的同步和通信的。多线程之间依旧是要线程同步的,不使用线程锁的话,会导致共享数据的修改引起冲突。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值