这是我在Go Playground 的代码package mainimport ( "fmt")func sum_up(my_int int, cs chan int) { my_sum := 0 for i := 0; i < my_int; i++ { my_sum += i } cs <- my_sum}func main() { my_channel := make(chan int) for i := 2; i < 5; i++ { go sum_up(i, my_channel) } for ele := range my_channel { fmt.Println(ele) } //fatal error: all goroutines are asleep - deadlock! fmt.Println("Done")}结果是:136fatal error: all goroutines are asleep - deadlock!我不明白是什么导致了错误。我的理解是,在我的函数中,sum_up我正在向my_channel. 为什么在我尝试打印出值后会出现问题?由于我看到 1,3,6 被打印,这意味着所有goroutines都已成功完成。此外,如果试图打印通道值的块 for ele := range my_channel { fmt.Println(ele) }被删除,然后我没有收到错误。所以它包括导致错误的块,但为什么呢?
- 3 回答
- 0 关注
- 199 浏览
添加回答
举报
0/150
提交
取消