什么是死锁?如何避免死锁?
什么是死锁?如何避免死锁?
死锁是指两个或多个进程在争夺系统资源时,由于互相等待对方释放资源而为无法继续执行的状态。
死锁只有同时满足以下四个条件才会发生:
- 互斥条件:一个进程占用了某个资源时,其他进程无法同时占用该资源。
- 请求保持条件:一个线程因为请求资源而阻塞的时候,不会释放自己的资源。
- 不可剥夺条件:资源不能被强制性地从一个进程中剥夺,只能由持有者自愿释放。
- 环路等待条件:多个进程之间形成一个循环等待资源的链,每个进程都在等待下一个进程所占有的资源。
只需要破坏上面一个条件就可以破坏死锁。
- 破坏请求与保持条件:一次性申请所有的资源。
- 破坏不可剥夺条件:占用部分资源的线程进一步申请其他资源时,如果申请不到,可以主动释放它占有的资源。
- 破坏循环等待条件:靠按序申请资源来预防。让所有进程按照相同的顺序请求资源,释放资源则反序释放。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 qyhome!