为了账号安全,请及时绑定邮箱和手机立即绑定

请教一个goroutines问题

请教一个goroutines问题

紫衣仙女 2019-04-14 11:18:33
下面代码片段,为什么执行到counter3000多,就不执行了。另外如果去掉fmt.Println("counterinmain:",counter)的注释,就可以执行完毕。这是为什么啊?09-02update:是在main()中第二个for循环卡死了,就是感觉goroutines没有执行完或者没有按预期执行(预期最后counter值会为9000)。但是去掉注释就不会卡死。另外今天在公司电脑,这个偶尔会卡死,偶尔又不会卡死,不知道为什么。packagemainimport("fmt""sync")varcounterint=0funcCount(iint,lock*sync.Mutex){lock.Lock()fmt.Println("BeforeCount()",i,counter)counter++fmt.Println("AfterCount()",i,counter)lock.Unlock()}funcmain(){lock:=&sync.Mutex{}fori:=0;i=9000{break}}}
查看完整描述

2 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

试着跑了一遍,在main中第二个for循环中卡死了,而且之前的goroutine也没有开始执行。换成sleep就能跑,并且没有遇到题主说的问题。求大神解释。
                            
查看完整回答
反对 回复 2019-04-14
  • 2 回答
  • 0 关注
  • 340 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信