用 Go 语言讲解死锁、活锁、饥饿、自旋锁
原文中文,约8800字,阅读约需21分钟。发表于: 。死锁 指两个或多个进程因互相持有对方所需的资源而处于等待状态,从而导致程序停止运行的现象。简单来说,在一个系统 […]
死锁是指两个或多个进程因互相持有对方所需的资源而处于等待状态,导致程序停止运行。死锁的四个必要条件是互斥、占有等待、不可抢占和循环等待。死锁处理方法包括被动策略和主动策略,如鸵鸟策略和预防死锁。死锁的检测方法有每种类型一个资源的死锁检测和每种类型多个资源的死锁检测。解除死锁的方法包括kill进程、抢占资源和回滚。活锁是指线程无法获取需要的资源而一直重试的现象,可以通过引入随机性和系统时间戳来解决。饿死是指某个进程因无法获取所需资源而无法执行的情况,可以通过公平调度、优先级反转和限制等待时间来解决。