分享
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。
``` 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所占的资源都是会被回收的吧?
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信875 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传