2019独角兽企业重金招聘Python工程师标准>>>
所谓死锁
1.死锁定义
维基百科的解释: 死锁(英语:Deadlock),又译为死结,计算机科学名词。当两个以上的运算单元,双方都在等待对方停止执行,以取得系统资源,但是没有一方提前退出时,就称为死结。在多工作业系统中,作业系统为了协调不同行程,能否取得系统资源时,为了让系统运作,必须要解决这个问题。
这里指的是进程死锁,是个计算机技术名词。它是操作系统或软件运行的一种状态:在多工系统下,当一个或多个进程等待系统资源,而资源又被进程本身或其他进程占用时,就形成了死锁。
所以换句话说死锁的本质:线程在持有锁资源A的同时,想要获取锁资源B,但锁资源B此时被当前线程或者其他线程永久持有,无法释放锁资源,导致线程的永久阻塞
2.死锁的条件:
一般来说,要出现死锁问题需要满足以下条件:
-
互斥条件:一个资源每次只能被一个线程使用。
-
请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
-
不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺。
-
循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
只要破坏死锁 4 个必要条件之一中的任何一个,死锁问题就能被解决。