我想知道在退出程序之前等待 goroutine 完成的正确方法是什么。阅读其他一些答案似乎 bool chan 可以解决问题,如Playground 链接
func do_stuff(done chan bool) {
fmt.Println("Doing stuff")
done <- true
}
func main() {
fmt.Println("Main")
done := make(chan bool)
go do_stuff(done)
<-done
//<-done
}
我在这里有两个问题:
为什么 <- done 完全有效?
如果我取消对最后一行的注释会发生什么?我有一个死锁错误。这是因为通道是空的并且没有其他函数向它发送值吗?
BIG阳
饮歌长啸
相关分类