优化定时器

This commit is contained in:
boyce
2020-12-11 17:58:43 +08:00
parent e2a156473b
commit ddef1e7165
2 changed files with 7 additions and 7 deletions

View File

@@ -178,7 +178,7 @@ func (m *Module) AfterFunc(d time.Duration, cb func()) *timer.Timer {
return m.dispatcher.AfterFunc(d,cb,m.OnCloseTimer,m.OnAddTimer) return m.dispatcher.AfterFunc(d,cb,m.OnCloseTimer,m.OnAddTimer)
} }
func (m *Module) CronFunc(cronExpr *timer.CronExpr, cb func()) *timer.Cron { func (m *Module) CronFunc(cronExpr *timer.CronExpr, cb func(*timer.Cron)) *timer.Cron {
if m.mapActiveTimer == nil { if m.mapActiveTimer == nil {
m.mapActiveTimer =map[*timewheel.Timer]interface{}{} m.mapActiveTimer =map[*timewheel.Timer]interface{}{}
} }
@@ -186,7 +186,7 @@ func (m *Module) CronFunc(cronExpr *timer.CronExpr, cb func()) *timer.Cron {
return m.dispatcher.CronFunc(cronExpr,cb,m.OnCloseTimer,m.OnAddTimer) return m.dispatcher.CronFunc(cronExpr,cb,m.OnCloseTimer,m.OnAddTimer)
} }
func (m *Module) NewTicker(d time.Duration, cb func()) *timer.Ticker { func (m *Module) NewTicker(d time.Duration, cb func(*timer.Ticker)) *timer.Ticker {
if m.mapActiveTimer == nil { if m.mapActiveTimer == nil {
m.mapActiveTimer =map[*timewheel.Timer]interface{}{} m.mapActiveTimer =map[*timewheel.Timer]interface{}{}
} }

View File

@@ -164,7 +164,7 @@ func (disp *Dispatcher) AfterFunc(d time.Duration, cb func(),onCloseTimer func(t
return t return t
} }
func (disp *Dispatcher) CronFunc(cronExpr *CronExpr, cb func(),onCloseTimer func(timer *timewheel.Timer),onAddTimer func(timer *timewheel.Timer)) *Cron { func (disp *Dispatcher) CronFunc(cronExpr *CronExpr, cb func(*Cron),onCloseTimer func(timer *timewheel.Timer),onAddTimer func(timer *timewheel.Timer)) *Cron {
now := time.Now() now := time.Now()
nextTime := cronExpr.Next(now) nextTime := cronExpr.Next(now)
if nextTime.IsZero() { if nextTime.IsZero() {
@@ -179,7 +179,7 @@ func (disp *Dispatcher) CronFunc(cronExpr *CronExpr, cb func(),onCloseTimer func
now := time.Now() now := time.Now()
nextTime := cronExpr.Next(now) nextTime := cronExpr.Next(now)
if nextTime.IsZero() { if nextTime.IsZero() {
cb() cb(cron)
return return
} }
@@ -191,7 +191,7 @@ func (disp *Dispatcher) CronFunc(cronExpr *CronExpr, cb func(),onCloseTimer func
cron.t = timewheel.NewTimerEx(interval,disp.ChanTimer,cron) cron.t = timewheel.NewTimerEx(interval,disp.ChanTimer,cron)
onAddTimer(cron.t) onAddTimer(cron.t)
cb() cb(cron)
} }
cron.cb = cbFunc cron.cb = cbFunc
cron.t = timewheel.NewTimerEx(nextTime.Sub(now),disp.ChanTimer,cron) cron.t = timewheel.NewTimerEx(nextTime.Sub(now),disp.ChanTimer,cron)
@@ -199,7 +199,7 @@ func (disp *Dispatcher) CronFunc(cronExpr *CronExpr, cb func(),onCloseTimer func
return cron return cron
} }
func (disp *Dispatcher) TickerFunc(d time.Duration, cb func(),onCloseTimer func(timer *timewheel.Timer),onAddTimer func(timer *timewheel.Timer)) *Ticker { func (disp *Dispatcher) TickerFunc(d time.Duration, cb func(*Ticker),onCloseTimer func(timer *timewheel.Timer),onAddTimer func(timer *timewheel.Timer)) *Ticker {
funcName := runtime.FuncForPC(reflect.ValueOf(cb).Pointer()).Name() funcName := runtime.FuncForPC(reflect.ValueOf(cb).Pointer()).Name()
ticker := NewTicker(nil,nil,funcName,onCloseTimer) ticker := NewTicker(nil,nil,funcName,onCloseTimer)
// callback // callback
@@ -207,7 +207,7 @@ func (disp *Dispatcher) TickerFunc(d time.Duration, cb func(),onCloseTimer func(
cbFunc = func() { cbFunc = func() {
ticker.t = timewheel.NewTimerEx(d,disp.ChanTimer,ticker) ticker.t = timewheel.NewTimerEx(d,disp.ChanTimer,ticker)
onAddTimer(ticker.t) onAddTimer(ticker.t)
cb() cb(ticker)
} }
ticker.cb = cbFunc ticker.cb = cbFunc