读写锁和互斥锁的区别
Go 语言标准库 sync 提供了 2 种锁,互斥锁(sync.Mutex)和读写锁(sync.RWMutex)。
互斥锁(sync.Mutex)
互斥即不可同时运行。即使用了互斥锁的两个代码片段互相排斥,只有其中一个代码片段执行完成后,另一个才能执行。
Go 标准库中提供了 sync.Mutex 互斥锁类型及其两个方法:
读写锁(sync.RWMutex)
一种特殊类型的锁,其允许多个只读操作并行执行,但写操作会完全互斥。
这种锁称之为 多读单写锁 (multiple readers, single writer lock),简称读写锁