当前位置: 首页 > news >正文

做二手车的网站如何自己创建网站

做二手车的网站,如何自己创建网站,武汉 外贸网站建设,河源网站制作为什么golang不需要可重入锁? 在工程中使用锁的原因在于为了保护不变量,也可以用于保护内、外部的不变量。 基于此,Go 在互斥锁设计上会遵守这几个原则。如下: 在调用 mutex.Lock 方法时,要保证这些变量的不变性保持…

为什么golang不需要可重入锁?

在工程中使用锁的原因在于为了保护不变量,也可以用于保护内、外部的不变量。

基于此,Go 在互斥锁设计上会遵守这几个原则。如下:

  • 在调用 mutex.Lock 方法时,要保证这些变量的不变性保持,不会在后续的过程中被破坏。
  • 在调用 mu.Unlock方法时,要保证:
    • 程序不再需要依赖那些不变量。
    • 如果程序在互斥锁加锁期间破坏了它们,则需要确保已经恢复了它们。

以下代码可以看出方法F调用了方法G,两个方法均调用了锁。那么在实际开发工程中就可能存在虽然是同一个goroutine运行,但是在一个方法内很难知道其他方法是否也用了这个锁,用来做什么。那么重入锁在此时便无法保证保护不变量

虽然感觉可以通过IDE找到所有使用地方来进行排查

func F() {mu.Lock()... do some stuff ...G()... do some more stuff ...mu.Unlock()
}func G() {mu.Lock()... do some stuff ...mu.Unlock()
} 

为什么需要可重入锁?

在复杂并发应用中,需要跨多个方法同时持有一个锁。比如说存在两个接口方法A、B,A中调用了B,但是由于这两个方法都可能被其他方法所调用,所以如果没有可重入锁便可能会死锁

比如对于某些面向对象语言,父子类都有同一个带锁方法。还比如递归调用

个人观点

从需要可重入锁的观点来看,我认为应用场景其实并不算广泛。并且golang也不是Java这样的面向对象语言。而其他需要用到的场景,可以通过参数控制是否加锁、或者将递归调用函数提取到新函数中交予新函数加锁、或者采用channel之类的来迂回达成可重入锁的目的。这可能也正是golang的目的——鼓励多使用channel实现目的,以及简单更简单

Ref

  1. https://groups.google.com/g/golang-nuts/c/XqW1qcuZgKg/m/Ui3nQkeLV80J?pli=1
  2. https://www.zhihu.com/question/23284564
http://www.dinnco.com/news/35152.html

相关文章:

  • cms网站开发模式无锡seo公司找哪家好
  • 网站一般多长时间在线代理浏览网站
  • 中山市网站建站公司广州网站优化方式
  • 城市中国商业管理后台南宁seo优化公司排名
  • 建设网站 (公司)域名流量查询工具
  • 江西省城乡建设培训中心网站seo优化销售话术
  • 网站设计O2O平台佛山总代理seo规则
  • 域名注册技巧seo挂机赚钱
  • 程序开发外包seo网站优化服务合同
  • 网站开发费用明细电商网站有哪些
  • 国家安全部内设机构seo霸屏软件
  • 17网站一起做网店广州国大什么平台可以推销自己的产品
  • 做100个网站效果长尾词优化外包
  • ps做的网站如何转入dw台州seo排名优化
  • 临夏城乡建设局网站网站优化搜索排名
  • 企业的外币收入外管局网站做啥链友咨询
  • 外贸公司网址广告投放优化师
  • 英文网站公司长沙seo网站优化
  • 网站空间后台推广官网
  • 网站丢失怎么解决关键词搜索神器
  • 东莞专业网站建设平台做网站设计哪里有
  • 网站建设的语言与工具怎样优化网站关键词排名靠前
  • 网站里的聊天怎么做开发制作app软件
  • 网站建设_免费视频天津seo优化公司哪家好
  • 校园网站建设标书网站百度收录批量查询
  • 成都住建局官网平台seo专业课程
  • wordpress win主题天津抖音seo
  • 未备案网站 赚钱推广平台排行榜
  • 住房和城乡建设管理委员会网站营销官网
  • 重庆网站房地产百度账号登陆