为了账号安全,请及时绑定邮箱和手机立即绑定

在这种情况下没有出现恐慌

在这种情况下没有出现恐慌

Go
POPMUISE 2021-04-08 18:15:54
我惊慌失措func main() {    ch := make(chan int)    ch <- 1    fmt.Println(<-ch)}fatal error: all goroutines are asleep - deadlock!goroutine 1 [chan send]:main.main()    /tmp/sandbox058504389/main.go:10 +0x60我相信,go会检测到主例程在写入时被阻塞,并且由于在写入非缓冲通道时发生了阻塞,因此永远不会到达读取代码段,并且我们会感到恐慌。为什么我们在下面的代码中看不到问题,为什么不慌张func main() {    fmt.Println("Hello, playground")    var wg sync.WaitGroup    ch := make(chan int)    wg.Add(1)    go func() {        <-ch         wg.Done()    }()    wg.Wait()}鉴于在工作片段中,如果我将<-ch通道read更改为ch<-,即写操作,则确实会看到错误。有人可以解释我为什么吗?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 221 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信