Golang之Mutex
引用 sync.mutex 源代码分析 Golang 中 Mutex 的源码实现 建议阅读 Golang中Mutex的实现 图解Go里面的互斥锁mutex了解编程语言核心实现源码 互斥锁有两种状态:正常状态和饥饿状态。 在正常状态下,所有等待锁的goroutine按照FIFO顺序等待。唤醒的goroutine不会直接拥有锁,而是会和新请求锁的goroutine竞争锁的拥有。新请求锁的goroutine具有优势:它正在CPU上执行,而且可能有好几个,所以刚刚唤醒的goroutine有很大可能在锁竞争中失败。在这种情况下,这个被唤醒的goroutine会加入到等待队列的前面。 如果一个等待的goroutine超过1ms没有获取锁,那么它将会把锁转变为饥饿模式。 在饥饿模式下,锁的所有权将从unl...阅读全文