package mainimport ( "fmt")func f1(in chan int) {
fmt.Println(<-in)
}func main() {
out := make(chan int)
out <- 2
go f1(out)
}为什么这样会造成死锁?怎么解决?
1 回答
拉丁的传说
TA贡献1789条经验 获得超8个赞
改成这样:
package mainimport ( "fmt")func f1(in chan int) { fmt.Println(<-in) }func main() { out := make(chan int) go f1(out) out <- 2}
因为你make是不带缓冲的chan
所以chan需要有人消费才能写入,不然会阻塞
因此还有第二种方法,生成带缓冲的chan:
make(chan int, 1)
- 1 回答
- 0 关注
- 737 浏览
添加回答
举报
0/150
提交
取消