sync.pool对象缓存
- 尝试从私有对象获取
- 私有对象不存在,尝试从当前Processor的共享池获取()
- 如果当前Processpr共享池也是空,那么尝试去从其他Processor的共享池获取
- 如果所有子池都是空,最后用户指定的New函数产生一个新的对象返回
GC会清除sync.pool缓存对象
对象的缓存有效期为下一次GC之前
package pool
import (
"fmt"
"runtime"
"sync"
"testing"
)
func TestSyncPool(t *testing.T){
pool := &sync.Pool{
New: func() interface{} {
fmt.Println("Create a new project")
return 100
},
}
v := pool.Get()
fmt.Println(v)
pool.Put(3)
runtime.GC()
v1,_ := pool.Get().(int)
fmt.Println(v1)
}