Golang中所有goroutine都处于asleep状态的错误解决方法
Golang中所有goroutine都处于asleep状态的错误解决方法 在所有结果打印完成后出现死锁错误。不确定如何修复。认为这是通道关闭方式的问题。 https://play.golang.org/p/MnDTp-ETigl
6 回复
数一数。你的最后一个版本和第一个版本存在同样的问题。
更多关于Golang中所有goroutine都处于asleep状态的错误解决方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
既然你知道期望接收多少项数据,只需在收到第7项后关闭即可。
由于c尚未关闭,for … range循环会等待第8个值、第9个值,直到c被关闭。但您只在循环结束后才关闭c,而由于c未被关闭,循环永远不会结束。
i 永远不会大于 len(x),因为它从 0 迭代到 6,而 len(x) 的值是 7。
此外,你在"生成"7个goroutine后尝试关闭,但需要在接收到7个值后再关闭它。

