sync-lock 锁
# sync-lock 锁
sync.Mutex 用于保护共享状态的不变量。锁住后应快速完成内存操作,不要在临界区执行网络请求或等待外部事件。
type Counter struct {
mu sync.Mutex
value map[string]int
}
func (c *Counter) Add(key string) {
c.mu.Lock()
defer c.mu.Unlock()
c.value[key]++
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
RWMutex 只在读远多于写且基准证明有收益时使用,Once 适合一次性初始化,原子操作适合简单计数或状态位。包含锁的结构体不能复制,应始终通过指针使用。