极客时间《云原生架构与 GitOps 实战》学习笔记 Day 7

114 阅读1分钟

Mutex 和 RWMutex

Mutex可以看做是锁,而RWMutex则是读写锁。一般的用法是将Mutex或者RWMutex和需要被保住的资源封装在一个结构体内

  • 如果有多个goroutine同时读写的资源,就一定要保护起来。
  • 如果多个goroutine只读某个资源,那就不需要保护。

使用锁的时候,优先使用RWMutex

  • RWMutex:核心就是四个方法,RLock、RUnlock、Lock、Unlock
  • Mutex:Lock和Unlock

double-check写法:

使用RWMutex实现double-check(如下边例子):

  • 加读锁先检查一遍
  • 释放读锁
  • 加写锁
  • 再检查一遍