Go 互斥锁 Mutex 源码分析(二)
前言 在 Go 互斥锁 Mutex 源码分析(一) 一文中分析了互斥锁的结构和基本的抢占互斥锁的场景。在学习锁的过程中,看的不少文章是基于锁的状态解释的,个人经验来看,从锁的状态出发容易陷入细节,了解锁的状态转换过一段时间就忘,难以做到真正的理解。想来是用静态的方法分析动态的问题导致的。在实践中发现结合场景分析互斥锁对笔者来说更加清晰,因此有了 Go 互斥锁 Mutex 源码分析(一),本文接着结合不同场景分析互斥锁。 ...
前言 在 Go 互斥锁 Mutex 源码分析(一) 一文中分析了互斥锁的结构和基本的抢占互斥锁的场景。在学习锁的过程中,看的不少文章是基于锁的状态解释的,个人经验来看,从锁的状态出发容易陷入细节,了解锁的状态转换过一段时间就忘,难以做到真正的理解。想来是用静态的方法分析动态的问题导致的。在实践中发现结合场景分析互斥锁对笔者来说更加清晰,因此有了 Go 互斥锁 Mutex 源码分析(一),本文接着结合不同场景分析互斥锁。 ...
前言 锁作为并发编程中的关键一环,是应该要深入掌握的。 锁 示例 实现锁很简单,示例如下: 1var global int 2 3func main() { 4 var mu sync.Mutex 5 var wg sync.WaitGroup 6 7 for i := 0; i < 2; i++ { 8 wg.Add(1) 9 go func(i int) { 10 defer wg.Done() 11 mu.Lock() 12 global++ 13 mu.Unlock() 14 }(i) 15 } 16 17 wg.Wait() 18 fmt.Println(global) 19} 输出: ...