我是新手golang(具有Java并发背景)。考虑一下代码的和平:
package main
import "fmt"
func sendenum(num int, c chan int) {
c <- num
}
func main() {
c := make(chan int)
go sendenum(0, c)
x, y := <-c, <-c
fmt.Println(x, y)
}
当我运行此代码时,出现此错误
fatal error: all goroutines are asleep - deadlock!
goroutine 1 [chan receive]:
main.main()
/home/tarrsalah/src/go/src/github.com/tarrsalah/stackoverflow/chan_dead_lock.go:12 +0x90
exit status 2
我知道,添加另一条go sendenum(0, c)语句可以解决问题,...但是
当与凡僵局发生了什么?
梵蒂冈之花
胡子哥哥
相关分类