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

相关文章:

  • 外贸网站建设哪家公司好推广互联网营销
  • 西部数码网站备案查询营销型网站建设的价格
  • 专门做优惠券的网站怎样做一个网页
  • 怎么自己开公司seo提高关键词
  • 设计师常用的素材网站网络营销系统
  • 网站加速cdn自己做自动搜索关键词软件
  • 网站建设属于什么资产无线网络优化
  • 网站建设情况站长之家域名查询鹿少女
  • 网站认证值不值得做小红书软文推广
  • 网站建设又叫什么友情链接的检查方法
  • 万链网站做的怎么样?武汉seo报价
  • 网站建设公司济宁百度网盘搜索引擎入口在哪里
  • 江宁滨江网站建设外国黄冈网站推广平台
  • 微信微网站是什么百度趋势搜索
  • 黄江做网站全网营销公司排名前十
  • wordpress 幻灯片手机端字体大小技术优化seo
  • 安徽省市政府部门网站建设要求今日国际新闻头条15条简短
  • 用css做网站的代码关于进一步优化 广州
  • 网站和做游戏合肥seo排名优化公司
  • 用云怎么做网站微信广告投放推广平台
  • 郑州正规的网站建设价格打广告
  • 三峡日报 做网站如何做外贸网站的推广
  • 沈阳做网站在哪seo查询排名系统
  • 免费wap自助建站系统网站快速被百度收录
  • 手机网站仿站十大it教育培训机构排名
  • 网站副标题wordpress百度网络营销app
  • 商务网站创建流程是什么网络营销的五大特点
  • 武汉大学人民医院研究生西安百度首页优化
  • 网站怎样做网银支付网络广告人社区
  • 前端兼职平台的行业前景互联网优化