猿问

为什么我在尝试从从未在 goroutine 中接收数据但在 main func

为什么我会在这里陷入僵局


c := make(chan bool)

fmt.Println(<-c)

fmt.Println("done")

而不是在这里


c := make(chan bool)

go func() {

    fmt.Println(<-c)

}()

fmt.Println("done")

我期待在这两种情况下都会出现死锁,因为两者都试图从永远不会接收数据的通道中读取。


汪汪一只猫
浏览 100回答 1
1回答

繁华开满天机

子 goroutine 被阻塞,但当前 goroutine 可以继续执行。只有当所有goroutines 同时被阻塞时,你才会遇到死锁。
随时随地看视频慕课网APP

相关分类

Go
我要回答