[Golang]同步工具-sync包的RWMutex-心智图总结

1. RWMutex,读写锁,又称读/写互斥锁。
读写锁是把对共享资源的"读操作"和"写操作"分别对待。
相比于互斥锁,读写锁可以实现更细緻的访问控制。

2. sync.RWMutex的类型和方法。
一个读写锁中包含两个锁,读锁和写锁。
sync.RWMutex类型中的Lock方法和Unlock方法,分别用于对写锁进行锁定和解锁。
而sync.RWMutex类型的RLock方法和RUnlock方法,分别用于对读锁进行锁定和解锁。

3. 使用读/写互斥锁的规则
a. 在写锁已被锁定的情况下,再试图锁定写锁,会阻塞当前的goroutine。
b. 在写锁已被锁定的情况下,试图锁定读锁,也会阻塞当前的goroutine。
c. 在读锁已被锁定的情况下,试图锁定写锁,会阻塞当前的goroutine。
d. 在读锁已被锁定的情况下,再试图锁定读锁,并不会阻塞当前的goroutine。

对于某个受到读写锁保护的共享资源,多个写操作不能同时进行,
写操作和读操作,也不能同时进行,但多个读操作却可以同时进行。

解锁"读写锁中未被锁定的写锁",会立即引发panic。对于读锁也是如此。
并且此种panic是不可恢复的。

http://img2.58codes.com/2024/20131728RieOhOOyCG.png

http://img2.58codes.com/2024/20131728CHQSqlxiOd.png
参考来源:
郝林-Go语言核心36讲
https://github.com/hyper0x/Golang_Puzzlers
https://golang.org/pkg/cmd/go/internal/test/


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章