猿问

Why does chan not deadlock in goroution?

package main
func main() {
    ch1 := make(chan int)    
    go pump(ch1) // pump hangs}
func pump(ch chan int) {
      ch <- 1
      ch <- 2
}


鱼右
浏览 1019回答 1
1回答

一凡

go pump() 启动了新的协程,但是 main() 主函数启动完协程就执行完毕,那么,协程里面 ch 阻塞也影响不了 main 主线程。main 主线程运行结束,整个进程也就终止了,协程也会被清理掉。所以,需要在 main 里面加上一个阻塞,比如: sleep, WaitGroup 来控制。
随时随地看视频慕课网APP

相关分类

Go
我要回答