Go 中有两种类型的互斥锁:
Mutex
和 RWMutex
Mutex
提供 func Lock()
和 func Unlock()
。
RWMutex
提供这些功能以及 func RLock()
和 func RUnlock()
。
据我了解,我们应该只在读操作多而写操作少的情况下使用
RWMutex
,以允许并发读取。写锁也比较耗时。
但是,如果我只使用
RWMutex
并在我想允许并发读取时交替使用 func Lock() / func Unlock()
和当我想像普通 func RLock
一样时使用 func RUnlock
/ Mutex
呢? RLock
/ RUnlock
是否与普通互斥等效函数同时使用?
TLDR:当
Mutex
提供相同功能和更多选项时,为什么要使用 RWMutex
?