Go-同步原语与锁(一)互斥锁与读写锁
本文将讲解一下Go语言中的同步原语与锁。会阐述几种常见的锁,剖析其流程,然后针对每种同步原语举几个例子。由于文章比较长,为方便阅读,将这部分拆解为两部分。本文是第一部分 互斥锁与读写锁。 环境: go version go1.8.7 darwin/amd64 1 mutex 1.1 结构 先看下mutex在底层的结构: 代码位置sync/mutex.go type Mutex struct { state int32 // 状态 sema uint32 // 信号 } 在mutex中 主要有mutexLocked , mutexWorken 两种状态,mutexWaiterShift 是统计了等待mutex的routine 数量。 1.2 流程 参考文献中讲到Go1.9 针对互斥锁增加了饥饿...阅读全文