多线程代码这样:
package main
import "fmt"
func Add(x, y int, ch chan int) {
ch <- x + y
fmt.Println("Adding")
}
func main() {
chs := make(chan int, 5)
for i := 0; i < 10; i++ {
go Add(i, i, chs)
}
for value := range chs {
//value := <-ch
fmt.Println(value)
}
//close(chs)
}
使用liteIDE运行结果:
c:/go/bin/go.exe run add.go [D:/goproject/study/src/goThread] Adding Adding Adding Adding Adding 0 2 4 6 8 Adding Adding Adding Adding Adding 10 12 14 16 18 fatal error: all goroutines are asleep - deadlock! goroutine 1 [chan receive]: main.main() D:/goproject/study/src/goThread/add.go:17 +0x96 exit status 2 错误: 进程退出代码 1.
运行结果是出来了,但是怎么才能不让它报错?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
那个channel要在数据传输完毕的时候关闭,而且要在数据的发送端关闭。
好像是这样的。
你看我这样就没报错: