我尝试解决我的泄漏代码。但是向通道添加缓冲区并没有达到目的。
我的代码
package main
import (
"fmt"
"runtime"
"time"
)
func main() {
fmt.Println(runtime.NumGoroutine())
leaking()
time.Sleep(5)
fmt.Println(runtime.NumGoroutine())
}
func leaking() {
errChang := make(chan int, 1)
go func() {
xx := return666()
errChang <- xx
}()
fmt.Println("hola")
return
fmt.Println(<-errChang)
}
func return666() int {
time.Sleep(time.Second * 1)
return 6
}
我最初的代码没有使用缓冲区,导致 go-routine 中的泄漏函数,.. 泄漏。在这篇文章之后,我预计通过向通道添加缓冲区,可以避免泄漏。
撒科打诨
相关分类