golang 并发运算时主线程先运行完,子线程运行没结束的问题记录
Posted zheng123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang 并发运算时主线程先运行完,子线程运行没结束的问题记录相关的知识,希望对你有一定的参考价值。
代码如下:
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 并发运算时主线程先运行完,子线程运行没结束的问题记录的主要内容,如果未能解决你的问题,请参考以下文章
C++并发与多线程 2_线程启动结束,创建线程多种方法,join,detach