xiongliuhua

xiongliuhua

Golang源码笔记:sync.Mutex源码阅读

锁也有两种模式,一种正常模式,一种饥饿模式,两者的区别主要如下:
1. 正常都是FIFO模式,在队列中第一个等待的goroutine唤醒后获取锁,但是如果此时有新的goroutine来竞争锁,此时新的goroutine有优势获取锁,因为新的goroutine正在占据CPU使用;
2. 饥饿模式下,严格按照FIFO模式,新的goroutine获取不到当前锁,主动权直接交给队列第一个goroutine