知识卡片
读写锁偏读多
内容
RWMutex 允许多个读锁或一个写锁,适合读远多于写的共享数据。它不是 Mutex 的免费升级:写锁会等待读锁释放,读写比例不清楚时可能反而增加调度复杂度。
参考来源
- 位置:《Go语言高级开发与实战》第4章《Go语言并发编程》(源文件:_epub-src/GoYu Yan Gao Ji Kai Fa Yu Shi Zhan_split_038.html)
- 结论依据:原文说明 RWMutex 可加多个读锁或一个写锁,经常用于读次数远多于写次数的场景,因此支撑该适用边界。
- 原始内容:(1)读写互斥锁的定义 在Go语言中,读写互斥锁(sync.RWMutex)是一个控制goroutine访问的读写锁。该锁可以加多个读锁或者一个写锁,其经常用于读次数远远多于写次数的场景。 RWMutex结构体组合了Mutex结构体,其定义如下。 (2)读写互斥锁的方法 写操作的Lock()和Unlock()方法的定义如下。 对于写锁,如果在添加写锁之前已经有其他的读锁和写锁,则Lock()方法就会阻塞,直到该写锁可用。为确保该