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