死锁 / 活锁
最后更新于:2022-04-02 04:03:11
[TOC]
## 死锁
死锁(Deadlock)就是一个进程拿着资源A请求资源B,另一个进程拿着资源B请求资源A,双方都不释放自己的资源,导致两个进程都进行不下去
如
```
// main.go
package main
func main() {
ch := make(chan int)
<-ch
}
```
## 活锁
举个很简单的例子,两个人相向过独木桥,他们同时向一边谦让,这样两个人都过不去,然后二者同时又移到另一边,这样两个人又过不去了。如果不受其他因素干扰,两个人一直同步在移动,但外界看来两个人都没有前进,这就是活锁。
- 活锁会导致CPU耗尽的,解决办法是引入随机变量、增加重试次数等
';