尝试从多个go例程中收集数据时出错

时间:2018-05-02 14:31:39

标签: go goroutine

我正在尝试并行运行多个goroutine,然后在完成所有计算后收集这些计算的结果。

无论我尝试什么,我都会收到以下错误:

致命错误:所有goroutine都睡着了 - 死锁!

以下是我的代码的布局:

 func Function(inputs) {

     var wg sync.WaitGroup
     wg.Add(numBatch)

     deltaChan := make(chan DeltaPair)

     for b := 1 ; b <= numBatch ; b++ {

          ... some calculations

          go BackPropagate(otherinputs, deltaChan, &wg)
     }

     for delta := range deltaChan {

           AddNeurons(&nDeltas, &delta.n)
          AddSynapses(&sDeltas, &delta.s)
     }

     wg.Wait()

     close(deltaChan)
}

func BackPropagate(otherinputs, deltaChan chan<- DeltaPair, wg *sync.WaitGroup) {

     defer (*wg).Done()

     ... some calculations

     deltaChan <- DeltaPair{nDeltas, sDeltas}
}

0 个答案:

没有答案