1. 首页
  2. 主题
  3. Go问与答

多次close同一个资源是否有问题?

AK.zz · · 2561 次点击
请教个问题 我有个*netTCPConn, 我在一个routinge做了defer c.Close(),另一个也做了defer c.Close()可不可以? 如果不可以有没有好的办法? 我看 TCPConn有个ok()会判断c是有有效,是否这样就可以多次close了呢? 例如: ```go func aaa(c *net.TCPConn) { defer c.Close() go bbb(c) } func bbb(c *net.TCPConn) { defer c.Close() } ```
Close 实现中不是进行了判断吗?无非 Close 会返回错误,并不会 panic;另外,你为啥要 Close 两次,defer 能保证一定会执行的
#3
更多评论
多次 Close 无非返回 error,而一般 Close 不关心返回值,所以,多次 Close 并不会有什么问题。你也可以实际试试,不panic 就行
#1
如果一个routine close了 是不是这个conn就可能被回收了
#2

用户登录

没有账号?注册

今日阅读排行

    加载中

一周阅读排行

    加载中