package netstorage import ( "sync" "github.com/VictoriaMetrics/VictoriaMetrics/lib/cgroup" ) // GetInsertCtx returns InsertCtx from the pool. // // Call PutInsertCtx for returning it to the pool. func GetInsertCtx() *InsertCtx { select { case ctx := <-insertCtxPoolCh: return ctx default: if v := insertCtxPool.Get(); v != nil { return v.(*InsertCtx) } return &InsertCtx{} } } // PutInsertCtx returns ctx to the pool. // // ctx cannot be used after the call. func PutInsertCtx(ctx *InsertCtx) { ctx.Reset() select { case insertCtxPoolCh <- ctx: default: insertCtxPool.Put(ctx) } } var ( insertCtxPool sync.Pool insertCtxPoolCh = make(chan *InsertCtx, cgroup.AvailableCPUs()) )