【发布时间】:2021-12-25 06:25:13
【问题描述】:
我遇到以下代码fatal error: all goroutines are asleep - deadlock!
我使用缓冲通道是否正确?如果您能给我指点,我将不胜感激。不幸的是,我已经走投无路了。
func main() {
valueChannel := make(chan int, 2)
defer close(valueChannel)
var wg sync.WaitGroup
for i := 0; i < 10; i++ {
wg.Add(1)
go doNothing(&wg, valueChannel)
}
for {
v, ok := <- valueChannel
if !ok {
break
}
fmt.Println(v)
}
wg.Wait()
}
func doNothing(wg *sync.WaitGroup, numChan chan int) {
defer wg.Done()
time.Sleep(time.Duration(rand.Intn(1000)) * time.Millisecond)
numChan <- 12
}
【问题讨论】: