加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 09:33:31 所属栏目:大数据 来源:网络整理
导读:代码如下: 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 B

代码如下:

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),让主线程“多等一会”再结束。详细的加入信道的解决方案等国庆回来后再继续研究~

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读