死锁
死锁四大条件
- 互斥条件:资源在一个时间段内只能为一个进程使用,其他进程阻塞等待
- 保持与请求条件:进程在保持占有一个资源,又请求新资源
- 不可剥夺条件:进程占用的资源只能由该进程释放
- 循环等待条件:多个进程形成循环等待资源释放
死锁处理方式(根据死锁产生的前中后)
预防死锁
- 破坏死锁产生条件
避免死锁
- 银行家算法
- 加锁顺序
- 加锁时限
检测死锁
- 由操作系统实现死锁检测进程,若产生死锁,执行解除死锁
解除死锁
- 撤销进程法
- 进程回退法
go死锁场景
- goroutine无限阻塞chan
- mysql事务行锁导致死锁
This post is licensed under CC BY 4.0 by the author.