我是靠谱客的博主 调皮砖头,最近开发中收集的这篇文章主要介绍多线程死锁 危害 解决方案,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1 什么是死锁?

两个或以上线程或进程在执行过程中,因争夺资源而造成互相等待的现象,若无外力作用

,它们将无法推进下去。

产生死的条件(同时满足)循不互请

互斥:共享资源a和b只能被一个线程占用(无法破坏)

请求和保持:线程T1已经获得共享资源a,在等待共享资源B的时候,不释放共享资源a(在首次执行时一次性申请所有的资源)

不可她占:其他线程不可强行抢占T1占有的资源(主动释放线程占有的资源)

循环等待:线程T1等待线程T2占有的资源,线程T2等待线程T1占有的资源,这造成循环等待(按顺序申请资源来预防死锁的产生)

如A B 两个线程争夺刀叉。

A 拿到刀,然后去争夺叉。  B拿到叉去争夺刀。

这个时候A争夺的叉被B拿到已经锁住了,而B争夺的的刀也被A拿到锁住了。就一直等待,造成死锁。

解决方案:刀和叉要有顺序。当去争夺叉的时候,必须先拿到刀。

这样就可以避免死锁了。

死锁危害

1死锁会使进程得不到正确的结果

2 死锁会使资源利用率降低。相互等待的线程不可用(如本来有5个线程工作,现在2个线程卡住了,只有3个线程能工作了)

3 死锁还会导致产生新的死锁

最后

以上就是调皮砖头为你收集整理的多线程死锁 危害 解决方案的全部内容,希望文章能够帮你解决多线程死锁 危害 解决方案所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部