关于Goroutine泄露的问题

MrDoubleU · · 605 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

``` 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

605 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传