golang 安全关闭chan 资源
chan是go中独特的一种通讯机制,不过如果用的不恰当,比如没有及时关闭,可能就会导致内存泄漏。
所以使用完,立即关闭,让go的gc能够回收这部分内存,避免大量的内存被占用,或者泄漏。
看示例代码
donec := make(chan bool, 2)
//做其他的事,比如go 起新的rountine,
<-donec
<-donec
if donec != nil {
close(donec)
donec = nil
}
我们在close方法之后,还加了一个donec=nil,明确告诉go,这个变量,现在是nil了。
如果你在某个goroutine,仍然引用了chan,那就要小心了。你发消息给chan,先要判断是不是nil
if donec != nil {
donec <- true
}
分类: 默认 标签: 发布于: 2022-07-13 08:55:06, 更新于: 2022-07-13 08:56:21