知识卡片

读写锁偏读多

专业/工作 · 489.b.2.b.1.a.1.c.1.b.1.a.3

内容

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()方法就会阻塞,直到该写锁可用。为确保该