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

哈尔滨模板网站媒体平台推广

哈尔滨模板网站,媒体平台推广,西安做推广网站设计,广州高端品牌网站建设文章目录 并发安全性与原子操作读写锁分布式锁 并发安全性与原子操作 普通数据类型在并发读写中是会出现问题的,有时候操作会被吞,导致脏写,比如上面n加了两次应该为2,但是由于并发,n最后还是只加了一次 读写锁 sync.…

文章目录

    • 并发安全性与原子操作
    • 读写锁
    • 分布式锁

并发安全性与原子操作

在这里插入图片描述

  • 普通数据类型在并发读写中是会出现问题的,有时候操作会被吞,导致脏写,比如上面n加了两次应该为2,但是由于并发,n最后还是只加了一次

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

读写锁

  • sync.RWMutex
  • 读锁和写锁之间是互斥的,写锁之间互斥,读锁之间不互斥

在这里插入图片描述

  • 写-写 不可以

在这里插入图片描述

  • 写-读 不可以

在这里插入图片描述

  • 读-读 可以

在这里插入图片描述

  • 读-写 不可以

在这里插入图片描述

  • 释放锁后,就可以上锁成功了

在这里插入图片描述

  • 用锁来保证原子性操作

分布式锁

  • 一般我们在实际中会把go程序部署在多台服务器中同时运行一模一样的代码
  • 但是如果多人同时运行一样的代码,可能会出现问题
  • 分布式锁就是一个全局变量,独立于服务器,谁抢到这个锁谁就可以执行
  • 简单的分布式锁可以借助redis实现,setnx
// 尝试获取锁
result, err := rc.SetNX(context.Background(), "lock:resource1", "clientA", 10*time.Second).Result()
if err != nil {// 处理错误(如连接问题)log.Fatal(err)
}
if result {// 获取锁成功,执行业务逻辑defer rc.Del(context.Background(), "lock:resource1") // 完成后释放锁// ...
} else {// 锁已被其他客户端持有fmt.Println("获取锁失败")
}
  • rc.SetNX 尝试往redis中去写入对应key和value,如果key已经存在,则返回false,如果存在则设置成功返回true
  • cmd.Err() != nil 证明发生异常了,比如服务器突然断开了

在这里插入图片描述

在这里插入图片描述

  • 只有一个上锁成功,只会输出一次上锁成功

在这里插入图片描述

  • 协程0 上锁成功
http://www.dtcms.com/wzjs/140443.html

相关文章:

  • 如何设计网站布局国内b2b十大平台排名
  • 智能网站建设维护软件网络推广网站
  • 医疗网站优化html网页制作成品
  • 如何做发卡网站seo的中文含义是什么
  • 网站推广的途径自己搭建网站需要什么
  • 导航类网站怎么做昆明seo工资
  • 游戏系统网站开发说明书百度竞价排名费用
  • 做图片网站会侵权吗海外市场推广方案
  • dw怎么做滚动视差的网站企业网站设计与实现论文
  • 做网站怎么选云主机自动app优化官网
  • 青县有做网站的吗做神马seo快速排名软件
  • 四川网站开发公司百度seo教程视频
  • app下载网站免费网站域名注册查询
  • 建设网站价格百度用户服务中心人工24小时电话
  • 手机网站开发人员选项百度网站分析
  • 昆明网站制作的教程seo查询站长工具
  • 湘潭网站建设优选磐石网络今日头条新闻最新
  • phpwind 做的网站网络软文营销的案例
  • 做网站没有学历的人会吗优秀营销案例分享
  • 开源网站程序seo网课培训
  • 微网站建设费用网站站内推广怎么做
  • 石家庄城乡建设局网站6百度统计收费吗
  • 单位网站 单位网页 区别吗stp营销战略
  • 朝西村小江网站建设整合营销理论
  • 做网站爱seo技术经理
  • wordpress本地字体深圳seo网络推广
  • 视频优化网站怎么做广告外链购买平台
  • 全球疫情最新数据排名一览表seo发帖论坛
  • 网站设置301跳转百度近日收录查询
  • 合肥专门做网站的公司有哪些南宁网站建设服务公司