Go 并发 #
Mutex #
type Mutex struct {
state int32 // 状态
sema uint32 // 信号量
}
- state (32 位)
- waitersCount (29 位): 当前互斥锁上等待的 Goroutine 个数
- mutexStarving (1 位): 当前的互斥锁进入饥饿状态
- Goroutine 超过 1 ms 没有获取到锁,就会转为饥饿模式
- mutexWoken (1 位): 从正常模式被从唤醒
- mutexLocked (1 位): 互斥锁的锁定状态
叶王 © 2013-2024 版权所有。如果本文档对你有所帮助,可以请作者喝饮料。