分享
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
### 如题,白白浪费我几天时间,偶发的并发bug不少,看我上篇文章就出现了各种bug,就不说了,现在来说个一定会出现的bug,
### 下面的代码在1.14.1版本是会报错的,结果不为1,但是我卸载后重新安装1.13.9之后就可以正常执行了!当然也可能是我的电脑原因,求大伙验证!
```
package main
import (
"fmt"
"sync"
)
var wg sync.WaitGroup
func main() {
var m sync.Map
for i := 0; i < 65536; i++ {
m.Store(1, 1)
}
wg.Add(2)
go Add(m)
go sub(m)
wg.Wait()
fmt.Println(m.Load(1))
}
func Add(m sync.Map) {
for i := 0; i < 10000; i++ {
value, _ := m.Load(1)
v := value.(int)
v += 1
m.Store(1, v)
}
wg.Done()
}
func sub(m sync.Map) {
for i := 0; i < 10000; i++ {
value, _ := m.Load(1)
v := value.(int)
v -= 1
m.Store(1, v)
}
wg.Done()
}
```
### 不出意外的话,上面的额结果不会绝对是1 !!!大伙可以试试!我就不去PR了!
### 似乎1.13.9也会出现,可能真是我的电脑环境问题了!
有疑问加站长微信联系(非本文作者))
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信2810 次点击 ∙ 1 赞
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传