【发布时间】:2016-10-31 15:03:07
【问题描述】:
想象一下下面的代码:
func waitForOneOfTwoProcesses() {
c := make(chan bool)
go func() {
time.Sleep(1 * time.Second)
c<-true
}()
go func() {
time.Sleep(2 * time.Second)
c<-true
}()
<-c
}
这是否泄漏了一个通道和一个 goroutine 或者 Go 是否认识到 c 已经消失并且 goroutine 可以退出?
如果通道的缓冲区大小为 2,答案会有所不同吗?
【问题讨论】: