Mutex 和 RWMutex
Mutex可以看做是锁,而RWMutex则是读写锁。一般的用法是将Mutex或者RWMutex和需要被保住的资源封装在一个结构体内。
- 如果有多个goroutine同时读写的资源,就一定要保护起来。
- 如果多个goroutine只读某个资源,那就不需要保护。
使用锁的时候,优先使用RWMutex
- RWMutex:核心就是四个方法,RLock、RUnlock、Lock、Unlock
- Mutex:Lock和Unlock
double-check写法:
使用RWMutex实现double-check(如下边例子):
- 加读锁先检查一遍
- 释放读锁
- 加写锁
- 再检查一遍