形成死锁的四个必要条件
1. 互斥条件
2. 请求与保持条件
3. 不剥夺条件
4. 环路等待条件
互斥条件是指进程对所分配到的资源进行排它性使用。说白了就是在一段时间内,某个资源每次只能被一个进程所占用。
请求与保持条件是指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放,说人话就是“有了碗里的饼,还嚷嚷着要吃锅里的汤”。
不剥夺条件是指进程已获得的资源在未使用完之前,不能被剥夺,只能由自己释放,说人话就是“自己拿到了就不给别人用,自己用完了才给别人”。
环路等待条件是指当发生死锁时,必然存在着一个资源的请求环形链,若干进程在这个环形链中循环等待。
避免死锁有以下几种常见的策略:
● 设置获得锁的超时时间
● 避免长事务
● 避免事务中的用户交互
● 降低隔离级别
1. 互斥条件
2. 请求与保持条件
3. 不剥夺条件
4. 环路等待条件
互斥条件是指进程对所分配到的资源进行排它性使用。说白了就是在一段时间内,某个资源每次只能被一个进程所占用。
请求与保持条件是指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放,说人话就是“有了碗里的饼,还嚷嚷着要吃锅里的汤”。
不剥夺条件是指进程已获得的资源在未使用完之前,不能被剥夺,只能由自己释放,说人话就是“自己拿到了就不给别人用,自己用完了才给别人”。
环路等待条件是指当发生死锁时,必然存在着一个资源的请求环形链,若干进程在这个环形链中循环等待。
避免死锁有以下几种常见的策略:
● 设置获得锁的超时时间
● 避免长事务
● 避免事务中的用户交互
● 降低隔离级别
展开
评论
点赞