``` golang?linenums
func mirroredQuery() string {
responses := make(chan string, 3)
go func() { responses <- request("asia.gopl.io") }()
go func() { responses <- request("europe.gopl.io") }()
go func() { responses <- request("americas.gopl.io") }()
return <-responses // return the quickest response
}
func request(hostname string) (response string) { /* ... */ }
```
这是GO语言圣经的代码,书上说如果通道换成**不带缓冲区**的,会造成Goroutine泄漏, 有一点不是很理解.
- main函数(虽然这个程序没有)退出以后,是不是所有goroutine所占的内存和CPU资源都会被回收?所谓的goroutine泄漏实际上是指在main函数退出之前, 这个goroutine阻塞了,但是又没有垃圾回收器来回收?但是main函数结束了以后这个阻塞的goroutine所占的资源都是会被回收的吧?
有疑问加站长微信联系(非本文作者)