概述
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 死锁还会导致产生新的死锁
最后
以上就是调皮砖头为你收集整理的多线程死锁 危害 解决方案的全部内容,希望文章能够帮你解决多线程死锁 危害 解决方案所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复