sync.Mutex 与 sync.WaitGroup 使用示例
使用 sync.Mutex 与 sync.WaitGroup
线程不安全的用法:
{var wg sync.WaitGroupcount := 0for i := 0; i < 10; i++ {// wg add 1 goroutinewg.Add(1)// goroutinego func() {defer wg.Done()for i := 0; i < 10000; i++ {// unsafe incrementcount++}}()}wg.Wait()fmt.Println(count)
}
加锁,线程安全:
{var myLock sync.Mutexvar wg sync.WaitGroupcount := 0for i := 0; i < 10; i++ {// wg add 1 goroutinewg.Add(1)// goroutinego func() {defer wg.Done()for i := 0; i < 10000; i++ {// safe incrementmyLock.Lock()count++myLock.Unlock()}}()}wg.Wait()fmt.Println(count)
}
其中一个运行输出:
53546
100000
自定义一个safe Counter
package counterimport ("log""sync"
)type Counter struct {mu *sync.MutexValue int
}func NewCounter(value int) *Counter {return &Counter{new(sync.Mutex), 0,}
}func (c *Counter) Increment() {c.mu.Lock()// defer funcdefer func() {c.mu.Unlock()log.Printf("mu sync.Mutex Unlocked!")}()// safe increment Valuec.Value++
}
使用 safe Counter
{var wg sync.WaitGroupcount := counter.NewCounter(0)for i := 0; i < 10; i++ {// wg add 1 goroutinewg.Add(1)// goroutinego func() {defer wg.Done()for i := 0; i < 10000; i++ {// safe incrementcount.Increment()}}()}wg.Wait()fmt.Println(count.Value)
}
正确输出:
100000
http://www.taodudu.cc/news/show-5607645.html
相关文章:
- vue中sync的使用
- 使用 docker-sync 调整 Docker for Mac 磁盘性能
- vue中的sync
- 保姆级教程:在Linux上安装配置Resilio Sync
- web 网页调试工具 browser-sync 在 Windows 上安装
- android的sync按钮在哪,android studio的Gradle一直在sync的办法
- linux sync命令,Linux中sync命令起什么作用呢?
- reposync命令详解--reposync同步aliyunyum库到本地
- SQLite3 --- sync同步机制
- vue中的.sync修饰符
- vue3中 :visible.sync 和slot报错
- 使用CLI操作S3的sync命令
- 关于sync()函数的使用
- unity3d html 富文本框,在Unity 2018中充分使用TextMesh Pro
- 别盲目听从你的用户
- 企业安全事件回顾:企业怎么才能做好源代码防泄露?
- 独立游戏开发者探讨F2P模式的可行性
- 使用word编辑论文,从正文开始添加页码的设置步骤
- 论文ddl:记录设置绪论从页码一开始
- 搜索引擎收录网站新闻源的三大要点!
- 百度算法的好处
- 排名:百度小程序商城源码-LaiKe,它的应用范围
- C# 解析百度天气数据,Rss解析百度新闻以及根据IP获取所在城市
- android 新闻列表json,Android中通过ListView的实现简单新闻列表
- 百度百科词条编辑为什么通过不了,如何修改百度百科词条才能成功
- 百度百科词条要怎么修改,百度百科人人都可以修改吗
- 百度新闻源重大调整,百家号将成企业曝光下一个风口?
- 【必看】百度取消新闻源,您需要知道几个问题
- 重磅!百度取消新闻源机制 一个时代的结束
- 百度工具问题如何申请百度 360 谷歌等新闻源
sync.Mutex 与 sync.WaitGroup 使用示例相关推荐
- Golang sync.Mutex 与 sync.RWMutex
文章目录 1.sync.Mutex 2.sync.RWMutex 2.1 Lock()与Unlock() 2.2 RLock() 和 RUnlock() 2.3 错误使用异常 参考文献 Golang ...
- Go 学习笔记(66)— Go 并发同步原语(sync.Mutex、sync.RWMutex、sync.Once)
1. 竞态条件 一旦数据被多个线程共享,那么就很可能会产生争用和冲突的情况.这种情况也被称为竞态条件(race condition),这往往会破坏共享数据的一致性. 举个例子,同时有多个线程连续向同一 ...
- 对于sync.Mutex使用注意事项
1.sync.Mutex的初始化注意事项 type MemProvider struct { lock *sync.Mutex //用来锁 sessions map[ ...
- GoLang之使用sync.pool和sync.cond
GoLang之使用sync.pool和sync.cond 目录 GoLang之使用sync.pool和sync.cond 1.sync.Pool结构体 1.1sync.Pool结构体 1.2Put方法 ...
- Go 学习笔记(23)— 并发(02)[竞争,锁资源,原子函数sync/atomic、互斥锁sync.Mutex]
本文参考 <Go 语言实战> 1. 竞争状态简述 如果两个或者多个 goroutine 在没有互相同步的情况下,访问某个共享的资源,并试图同时读和写这个资源,就处于相互竞争的状态,这种情况 ...
- Go的sync.Mutex(七):互斥锁锁定一个资源 只有一个协程操作其他等待
简介 多个协程会操作一个特定资源,就会出现意想不到的错误类比脏读幻读等,所以我们使用互斥锁, 一个协程使用特定资源的时候进行锁定,用完解锁, 再让其他协程使用,所以其他协程想使用此资源,必须自己给资源 ...
- golang sync.Mutex 互斥锁 使用实例
实例: var mutex sync.Mutex //互斥锁 func printer(str string){mutex.Lock() //加锁defer mutex.Unlock() //解锁fo ...
- go sync.Mutex
并发编程中,不免涉及到共享资源的操作,go也提供简易的互斥锁作为访问控制的手段sync.Mutex,通过简单的Lock()进行加锁,Unlock()进行释放. 接下来我们从源码入手,看看加锁和解锁到底 ...
- go vet 报错:xx_xx passes lock by value: sync.Map contains sync.Mutex; call of xx_xx copies lock value
问题描述: test.go: package main import "fmt" import "sync"var syncMapTest sync.Mapfu ...
最新文章
- python嵩天课后思考题_Python语言程序设计基础(第二版)嵩天等课后习题答案
- 李开复:AI行业正在回归商业本质,技术公司要有服务心态落地为王
- HashMap,LinkedHashMap,TreeMap的有序性
- UML解惑:图说UML中的六大关系--转
- centos 关闭防火墙
- 怎样编写测试类测试分支_编写干净的测试–从配置开始
- tableau三轴合并_举个栗子!Tableau技巧(34):同一张图表如何呈现多个度量
- ubuntu下idea后台执行的方法
- 计算机或与非门原理,依据基本原理构建现代计算机:从与非门到俄罗斯方块(基于项目的课程)...
- E3 tree 1.6在Firefox下显示问题的修复
- 天眼探空经济发展_“天眼”探空惊艳全球
- 农业农村部:非洲猪瘟对猪肉市场价格影响有限
- jQuery源码阅读
- [Prescan]Prescan中Sensor学习
- 超级美女抽出滤镜抠图
- 人人网首页登录页面html码,仿人人网WordPress登陆注册界面
- 【机器学习】吴恩达:机器学习的六个核心算法
- 现代前端技术解析:前端三层结构与应用
- 目标检测综述(二:古典方法对比现代方式以及目标检测算法相关概述)
- 利用Matlab对Excel数据表参数进行频谱分析(FFT)的方法
热门文章
- DNF端游服务器搭建流程
- 机械革命蛟龙7怎么样?测评值得买吗?详细性能点评
- 解读丨交通物流如何融合发展?线上线下联动出击
- darknet_ros安装的以及在PX4无人机仿真平台的目标检测
- 方源答:从键盘上输入年份和月份,输出这一年的该月有多少天。
- 第一台计算机是怎么样的
- 【流程】影视和游戏的IT基础设施详解
- 正版推荐 - Fences 4 – 让你的桌面更加整洁与高效的桌面图标文件整理工具软件!
- Uncaught Error: Mismatched anonymous define() module
- 清除IE10下input的叉叉(X)和密码输入框的眼睛图标