## RWMutex * 同一时间段内 有多个 goroutine 获取到读锁 * 同一时间段内 只有一个 goroutine 获取到写锁 * 同一时间段内 只能存在读锁或者写锁 (读写锁互斥) ~~~ var lock sync.RWMutex lock.RLock lock.Runlock lock.Lock() lock.Unlock() ~~~ 读锁代码 ![](https://img.kancloud.cn/7b/2d/7b2d5233362c79ff22bd423f93b0758b_782x412.png) 写锁代码 ![](https://img.kancloud.cn/14/ea/14ea3a4f7ba2332e3504f3e50e405f87_784x343.png) 运行结果 (同时/并发获取读锁 然后释放 )(获取写锁 释放写锁 获取写锁 释放写锁 ... ...)(读写锁没有同时执行 代表互斥) ![](https://img.kancloud.cn/95/38/95381649bbb81deb261812e91432010b_619x336.png) ![](https://img.kancloud.cn/3e/9b/3e9b11eb1636829835d28048caea400f_629x364.png)