死锁的概念:
死锁(Deadlock)是指两个或多个进程(线程)在竞争资源时,互相等待对方释放资源,从而陷入无限等待的状态。
死锁产生的必要条件:
-
互斥条件(Mutual Exclusion):资源不能共享,只能被一个进程或线程占用。
-
占有且等待条件(Hold and Wait):一个线程已经占有了一个资源,同时还在等待其他资源,而这些资源被其他线程占有。
-
不可剥夺条件(No Preemption):资源不能被强制剥夺,必须由占有资源的线程自行释放。
-
循环等待条件(Circular Wait):存在一个线程循环等待链,链中的每个线程都在等待下一个线程所占有的资源。
如何避免死锁:
我们得知了死锁的产生条件以后我们只需要破环其中任何一点,就可以避免死锁
-
破坏互斥条件:尽可能减少资源的独占访问,比如通过使用锁的读写模式,让多个线程可以同时读取资源。
-
破坏占有且等待条件:在申请资源时,要求线程一次性申请所有需要的资源,避免已经占有资源的线程继续申请资源的情况。
-
破坏不可剥夺条件:允许资源被抢占,比如当线程无法获取所需资源时,强制其释放已占有的资源。
-
破坏循环等待条件:给资源排序,要求进程按照固定顺序申请资源,避免形成环状等待链。
通过采取这些措施,可以降低死锁发生的可能性
标签:什么,占有,死锁,线程,条件,等待,资源 From: https://blog.csdn.net/qq_31786089/article/details/142370141