Go RWMutex并发怎么使用

免费建站   2024年05月10日 15:30  

这篇文章主要讲解了“Go RWMutex并发怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go RWMutex并发怎么使用”吧!

RWMutex表示读写锁:

1.它允许任意读操作同时进行,主要用于读多写少的场景。即修改数据时候需要加锁读取不需要加锁。

2.读写锁控制下的多个写操作之间都是互斥的,当一个goroutine获取写锁的之后,其他的goroutine获取读写锁都会等待

3 当一个goroutine获取读锁之后,其他的goroutine获取写锁都会等待,但其他goroutine获取读锁时,都会继续获取锁

综上:1同时只能有一个 goroutine 能够获得写锁定;2同时可以有任意多个 goroutine 获得读锁定;3同时只能存在写锁定或读锁定(读和写互斥)。

写操作的锁定和解锁

//Lock将rw设置为写锁定状态,禁止其他例程读取或写入。func(rw*RWMutex)Lock()//Unlock解除rw的写锁定状态,如果rw未被写锁定,则该操作会引发panic。func(rw*RWMutex)Unlock()

读操作的锁定和解锁

//RLock将rw设置为读锁定状态,禁止其他例程写入,但可以读取。func(rw*RWMutex)RLock()//Runlock解除rw的读锁定状态,如果rw未被读锁定,则该操作会引发panic。func(rw*RWMutex)RUnlock()

注意:

写解锁在进行的时候会试图唤醒所有因欲进行读锁定而被阻塞的Goroutine.

读解锁在进行的时候只会在已无任何读锁定的情况下试图唤醒一个因欲进行写锁定而被阻塞的Goroutine

若对一个未被写锁定的读写锁进行写解锁,会引起一个运行时的恐慌

而对一个未被读锁定的读写锁进行读解锁却不会如此`

在读多写少的场景,读写锁的性能高于互斥锁

感谢各位的阅读,以上就是“Go RWMutex并发怎么使用”的内容了,经过本文的学习后,相信大家对Go RWMutex并发怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

域名注册
购买VPS主机

您或许对下面这些文章有兴趣:                    本月吐槽辛苦排行榜

看贴要回贴有N种理由!看帖不回贴的后果你懂得的!


评论内容 (*必填):
(Ctrl + Enter提交)   

部落快速搜索栏

各类专题梳理

网站导航栏

X
返回顶部