写点什么

死锁是如何工作的

用户头像
卢卡多多
关注
发布于: 1 小时前

能说是死锁是如何产生的吗?

好多面试的时候,都会遇到一个比较难得话题,死锁,既考虑业务的逻辑关系,也要考虑自己对于死锁理解的能力,

1.为什么会发生死锁

锁的好处,为了数据安全,但是会减少性能,降低并发虽然可以一定程度上解决并发的问题,但是依旧会发生死锁,导致锁未及时释放的从而,引发很大的问题,

2.死锁发生的条件(前提)

(1)互斥条件在当前时间中,计算机中的某个数据只能被一个线程所占用,其他线程要是访问,只能是等待


(2) 不可剥夺条件


某个线程获取的数据资源使用完成之前,不能由其他线程强行抢占(只能是当前线程自己释放)


(3)请求与保持条件


当前线程已经获取到一个资源,但是又想访问另一个资源, 但是请求的资源被其他线程正在调用,


举个例子:当前回到家,然后家想去上厕所,但是进入家里有一个大门,而且进入之后还要去厕所


进入大门--->获取厕所的锁--> (但是现在已经有人在厕所了)-->


只能等待,别人使用完厕所,再次使用这时候,当前的线程只能处于一个阻塞等待的状态;


(4)循环等待条件


当前系统中的各个线程是相互等待的,比如 A 线程要在使用 B 线程的资源,但是进程 B 请求进程 C 占用, 进程 C 请求的资源 进程 A 占用, 形成了循环等待条件


这个四个条件缺一不可,直至四个条件,都满足的时候,会发生死锁;

处理死锁的方式

  • 预防死锁

  • 避免死锁

  • 检测死锁

  • 解除死锁


一般情况下,我们要避免死锁,开始使用;

发布于: 1 小时前阅读数: 3
用户头像

卢卡多多

关注

努力寻找生活答案的旅途者 2020.04.12 加入

公众号:卢卡多多,欢迎一起交流学习

评论

发布
暂无评论
死锁是如何工作的