package timerpool import ( "sync" "time" "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" ) // Get returns a timer for the given duration d from the pool. // // Return back the timer to the pool with Put. func Get(d time.Duration) *time.Timer { if v := timerPool.Get(); v != nil { t := v.(*time.Timer) if t.Reset(d) { logger.Panicf("BUG: active timer trapped to the pool!") } return t } return time.NewTimer(d) } // Put returns t to the pool. // // t cannot be accessed after returning to the pool. func Put(t *time.Timer) { t.Stop() timerPool.Put(t) } var timerPool sync.Pool