使用RWMutex代替Mutex有什么好处?

亚历克斯:

我不确定何时使用RWMutex和何时使用Mutex。

如果您使用RWMutex而不是Mutex,如果您先读后写,您是否节省资源?

我看到有些人不管做什么都一直在使用Mutex,有些人则使用RWMutex并运行以下方法:

func (rw *RWMutex) Lock()
func (rw *RWMutex) Unlock()
func (rw *RWMutex) RLock()
func (rw *RWMutex) RUnlock()

而不只是:

func (m *Mutex) Lock()
func (m *Mutex) Unlock()

如果您节省了资源,那么在进行更多的读写操作之后,应该使用RWMutex带来很大的不同吗?

彼得:

文档(强调我的):

RWMutex是读取器/写入器互斥锁。锁可以由任意数量的读取器或单个写入器持有。RWMutex的零值是未锁定的互斥量。

换句话说,读者不必彼此等待。他们只需要等待持有锁的作家。

因此,sync.RWMutex对于大多数读取的数据更可取,并且与sync.Mutex相比,节省的资源是时间。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用fromValue函数代替java枚举valueOf有什么好处?

在shell脚本中使用$()代替反引号有什么好处?

使用let值代替let有什么好处?

今天使用MapReduce代替Spark有什么好处?

使用settings.json代替mongodb集合有什么好处?

使用Redux-Saga代替在React组件中编写异步函数有什么好处?

使用requestAnimationFrame代替setTimeout进行去抖动/节流阀有什么好处

直接在Java中使用JAXP代替DOM / SAX有什么好处?

使用Google Cloud Storage代替Google Cloud SQL保存文件有什么好处

使用dns服务器代替基于/ etc / hosts的dns有什么好处

在ScalaJs的sbt构建中,使用webjar代替npm或bower并提供“提供”有什么好处吗?

在k8s中使用cni代替静态路由表有什么好处

使用std :: forward代替std :: move初始化对象有什么好处?

使用Marionette FirefoxDriver代替旧的Selenium FirefoxDriver作为Selenium测试仪有什么好处?

使用CSS .class代替[attribute]选择器有什么具体的好处?

使用基于对象的run()方法代替静态main有什么好处吗?

使用Elixir的“ with”有什么好处

使用Cordova有什么好处?

使用WeakReferences有什么好处?

使用arrayWithCapacity有什么好处

PHP-调用die()代替echo有什么真正的好处?

在解析JSON时使用NSDictionary有什么好处或好处?

使用MSM代替MSI有哪些限制/好处?

在JavaScript事件代码中使用匿名函数代替命名函数进行回调和参数有什么好处?

使用邮件分发服务有什么好处?

使用结果有什么好处?

使用QueudSynchronizer实现CountLatch有什么好处?

使用跨度而不是输入有什么好处

在DRF中使用HyperlinkedModelSerializer有什么好处?