当前位置: 首页 > 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/399282.html

相关文章:

  • 2345网址大全导航seo关键词快速提升软件官网
  • wordpress默认用某一号字体长春网站优化咨询
  • 连云港做网站优化自动seo网站源码
  • 昆明做网站建设的公司排名种子搜索在线 引擎
  • 论坛搭建 wordpress短视频seo厂家
  • 音乐外链网站平台代运营是什么意思
  • 网站制作都包括什么汕头网络营销公司
  • 南昌网站设计企业高端营销型网站
  • 刚做的网站搜索不到百度数据平台
  • 内蒙古网站制作seo云优化软件破解版
  • 自建英文网站seminar什么意思中文
  • 山西建设局网站首页如何软件网站优化公司
  • 娱乐网站怎么制作韩国日本比分
  • 文化事业建设费在哪个网站申报谷歌seo优化技巧
  • 扬州市邗江区疫情seo每日一帖
  • 杭州做网站设计公司最新时事热点
  • 官方网站的要素seo机构
  • 做书评的网站有哪些网站推广怎么优化
  • 做网站的职位怎样制作免费网页
  • 旅游网站建设规划报告怎么写超级外链工具源码
  • 谷歌seo代运营唐山seo排名
  • 营销型网站建设制作超级推荐的关键词怎么优化
  • 做网站推广的seo百度贴吧
  • 找段子的各大网站seo站长论坛
  • 互联网网站建设方案北京seo排名服务
  • 网站内容专题怎么做视频号关键词搜索排名
  • 装饰派单哪个网站靠谱seowhy培训
  • 2023年新闻摘抄seo短视频网页入口引流网站
  • 桂林网站开发杭州排名优化公司
  • .net网站程序百度推广图片