无缓存channel为什么在如下场景会失败?

来源:5-2 初阶配方 - channel使用如此简单

慕粉第一号

2021-08-07 18:14

func main() {

// 初始化channel

// channel在使用之前,必须进行make初始化

// 否则,它会是一个nil

ch := make(chan int)


// fmt.Println(ch)


// 输入channel

ch <- 1

// go func() {

//  ch <- 1

// }()


// 输出channel

go func() {

fmt.Println(<-ch)

}()


// 关闭channel

//close(ch)


//fmt.Println(ch)

// ch <- 2


//<-ch

time.Sleep(2 * time.Second)

}


写回答 关注

1回答

  • qq_慕勒1373151
    2022-05-04 10:13:00

    不懂你说的什么意思,你在执行ch <- 1的时候就已经被阻塞住无法继续执行了,所以下面那个goroutine都无法执行,你把上面那个goroutine放在ch<-1上面才行

Go并发之魂:Goroutine深入浅出【程序人生中的“米其林三星级”并发实战】

深入浅出Go并发核心:Goroutine,斩获Goroutine面试题。

5499 学习 · 8 问题

查看课程

相似问题