var p = &sync.Pool{
New: func() interface{} {
return &serveconn{}
},
}
func newServeConn() *serveconn {
sc := p.Get().(*serveconn)
runtime.SetFinalizer(sc, (*serveconn).finalize)
fmt.Println(sc, "SetFinalizer")
return sc
}
func (sc *serveconn) finalize() {
fmt.Println(sc, "finalize")
*sc = serveconn{}
runtime.SetFinalizer(sc, nil)
p.Put(sc)
}
上面的代码尝试重用 object by SetFinalizer,但调试后我发现 finalizer 从未被调用,为什么?
更新
这可能是相关的: https: //github.com/golang/go/issues/2368
繁星coding
相关分类