码迷,mamicode.com
首页 > 编程语言 > 详细

golang 并发运算时主线程先运行完,子线程运行没结束的问题记录

时间:2018-09-29 18:20:48      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:国庆   pre   不为   Golan   sleep   解决方案   div   segment   nes   

代码如下:

blocks,err:= mgo.FindBlocks(batch)    //获得当前批次下的矿体信息
    cubes:= BlockCutting(blocks[0],x,y,z,nest)
    for _,v := range cubes{if len(v.Incise)!=0 {
            beego.Debug("有东西")
        }
    }

其中BlockCutting中的一步是用go并发做的

go BlockAndObject(block, faces, segments, 0, nest)

这样输出的话,即使v.Incise不为空,也不会输出“有东西”。原因是go还在并行计算的时候,主线程就已经结束了,这样自然就不会输出“有东西”了。

简单一点的解决办法是加入time.Sleep(1000),让主线程“多等一会”再结束。详细的加入信道的解决方案等国庆回来后再继续研究~

 

golang 并发运算时主线程先运行完,子线程运行没结束的问题记录

标签:国庆   pre   不为   Golan   sleep   解决方案   div   segment   nes   

原文地址:https://www.cnblogs.com/zheng123/p/9725124.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!