go语言培训课程笔记11 workpool && select && 并发锁 && atomic

go语言培训课程笔记11 workpool && select && 并发锁 && atomic_第1张图片

go语言培训课程笔记11 workpool && select && 并发锁 && atomic_第2张图片

go语言培训课程笔记11 workpool && select && 并发锁 && atomic_第3张图片

go语言培训课程笔记11 workpool && select && 并发锁 && atomic_第4张图片

P101 select 学习

go语言培训课程笔记11 workpool && select && 并发锁 && atomic_第5张图片

select 获取值,从任意通道ch获取值,不按照顺序

go语言培训课程笔记11 workpool && select && 并发锁 && atomic_第6张图片

go语言培训课程笔记11 workpool && select && 并发锁 && atomic_第7张图片

P107 互斥锁

没有加锁控制,导致出现了总和不到10000

go语言培训课程笔记11 workpool && select && 并发锁 && atomic_第8张图片

go语言培训课程笔记11 workpool && select && 并发锁 && atomic_第9张图片

加锁后效果如下

go语言培训课程笔记11 workpool && select && 并发锁 && atomic_第10张图片

go语言培训课程笔记11 workpool && select && 并发锁 && atomic_第11张图片

普通锁下的执行结果,1.022s

go语言培训课程笔记11 workpool && select && 并发锁 && atomic_第12张图片

 

 

加读写锁后的执行结果

go语言培训课程笔记11 workpool && select && 并发锁 && atomic_第13张图片

go语言培训课程笔记11 workpool && select && 并发锁 && atomic_第14张图片

 

go语言培训课程笔记11 workpool && select && 并发锁 && atomic_第15张图片执行时间是1.020s

 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

P109 sync.Once

go语言培训课程笔记11 workpool && select && 并发锁 && atomic_第16张图片

P110 sync.Map学习

go语言内置的map不是并发安全的

go语言培训课程笔记11 workpool && select && 并发锁 && atomic_第17张图片

go语言培训课程笔记11 workpool && select && 并发锁 && atomic_第18张图片

下面是使用了

go语言培训课程笔记11 workpool && select && 并发锁 && atomic_第19张图片

P111 原子操作

go语言培训课程笔记11 workpool && select && 并发锁 && atomic_第20张图片

使用atomic也可以保证不出并发问题

 

你可能感兴趣的:(go语言)