1. 程式人生 > >golang 並發運算時主線程先運行完,子線程運行沒結束的問題記錄

golang 並發運算時主線程先運行完,子線程運行沒結束的問題記錄

div 題記 face 繼續 ola 解決 span 信息 並行

代碼如下:

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 並發運算時主線程先運行完,子線程運行沒結束的問題記錄