Go基础--24 sync.pool

sync.pool对象缓存

  1. 尝试从私有对象获取
  2. 私有对象不存在,尝试从当前Processor的共享池获取()
  3. 如果当前Processpr共享池也是空,那么尝试去从其他Processor的共享池获取
  4. 如果所有子池都是空,最后用户指定的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)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值