Concurrency 第二个通道即使独立也会导致死锁

Concurrency 第二个通道即使独立也会导致死锁,concurrency,go,goroutine,Concurrency,Go,Goroutine,这更像是一个来自中国的后续问题 我不明白为什么添加第二个通道(在我的例子中是c2)会导致死锁。通道是独立的,我不明白为什么c2应该被阻止 func do_东西(完成){ fmt.Println(“做事”) 完成陈述 c2 := make(chan int) c2 <- 1 通过此更改,发送可以在不与接收器同步的情况下继续 声明 c2 := make(chan int) c2 <- 1 通过此更改,发送可以在不与接收器同步的情况下继续 通信阻塞,直到发送可以继续。在 如果接

这更像是一个来自中国的后续问题

我不明白为什么添加第二个通道(在我的例子中是c2)会导致死锁。通道是独立的,我不明白为什么c2应该被阻止

func do_东西(完成){
fmt.Println(“做事”)
完成陈述

c2 := make(chan int)
c2 <- 1
通过此更改,发送可以在不与接收器同步的情况下继续

声明

c2 := make(chan int)
c2 <- 1
通过此更改,发送可以在不与接收器同步的情况下继续

通信阻塞,直到发送可以继续。在 如果接收机准备就绪,则无缓冲信道可以继续

package main

func main() {
    c2 := make(chan int)
    c2 <- 1
}
没有接收机准备好

package main

func main() {
    c2 := make(chan int)
    c2 <- 1
}

通信阻塞,直到发送可以继续。在 如果接收机准备就绪,则无缓冲信道可以继续

package main

func main() {
    c2 := make(chan int)
    c2 <- 1
}
没有接收机准备好

package main

func main() {
    c2 := make(chan int)
    c2 <- 1
}