死锁出现的四种原因及避免方法
1.互斥条件 :该资源任意⼀个时刻只由⼀个线程占⽤。
避免方法:这个条件我们没有办法破坏,因为我们⽤锁本来就是想让他们互斥的(临界 资源需要互斥访问)。
2. 请求与保持条件 :⼀个进程因请求资源⽽阻塞时,对已获得的资源保持不放。
避免方法:⼀次性申请所有的资源。
3. 不剥夺条件 :线程已获得的资源在末使⽤完之前不能被其他线程强⾏剥夺,只有⾃⼰使⽤完 毕后才释放资源。
避免方法:占⽤部分资源的线程进⼀步申请其他资源时,如果申请不到,可以主动释 放它占有的资源。
4. 循环等待条件 :若⼲进程之间形成⼀种头尾相接的循环等待资源关系。
避免方法:靠按序申请资源来预防。按某⼀顺序申请资源,释放资源则反序释放。