谁能帮忙解释一段并发代码的诡异结果

star24 · · 3596 次点击
恩,我也验证了一下,我把calsome分成a和b两组,a组直接进入死循环,b组先sleep 2s再进入死循环,这样一来main退出前b组基本上都会有一些还没进入死循环,这样就会一直都能成功退出。而贴子中的例子是所有calsome都直接进入死循环,就极可能出现main退出前所有calsome都进入了死循环,这种情况下就会夯死。
#9
更多评论
问题应该是你的死循环问题上面.运行死循环占用大量cpu资源,这时候其他任务就不能正常执行,因此会出现程序"死亡"状态.该程序删掉j的死循环便可正常执行.
#1
有结果输出也是有可能的,ch <- subSum 是在死循环前,主goroutine是可以到,幸运的话还是输出结果的;要是有一个或者多个gorountine跑到了死循环, 这种空转cpu肯定回100%,还会导致其他goroutine没法执行
#2