一 死锁的概念
-
1、定义
- 在并发环境下,各进程因为竞争资源而造成的一种互相等待对方手里的资源,而导致各个进程都阻塞,都无法向前推进的现象,就是“死锁”。
-
2、区别
- 死锁
- 互相等待对方手里的资源,而导致各个进程都阻塞,都无法向前推进的现象。
- 饥饿
- 长期得不到想要的资源,某进程无法向前推进的现象。
- 死循环
- 某进程执行过程中一直跳不出来某个循环的现象。有时是因为程序逻辑bug,有时是因为程序员故意设计的。
- 死锁
-
3、必要条件
- 互斥条件
- 只有对互斥使用的资源进行争抢才会导致死锁。
- 不可剥夺条件
- 进程所获得的资源在未使用完之前,不能由其他进程强行夺走,只能主动释放。
- 请求和保持条件
- 进程已经保持了至少一个资源,但又提出新的资源请求。请求被阻塞了,但是自己手里的资源却还保持不放。
- 循环等待条件
- 存在一种进
- 互斥条件