mirror of
https://github.com/duanhf2012/origin.git
synced 2026-02-03 22:45:13 +08:00
优化定时器
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
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 {
|
||||
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)
|
||||
}
|
||||
|
||||
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 {
|
||||
m.mapActiveTimer =map[*timewheel.Timer]interface{}{}
|
||||
}
|
||||
|
||||
@@ -164,7 +164,7 @@ func (disp *Dispatcher) AfterFunc(d time.Duration, cb func(),onCloseTimer func(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()
|
||||
nextTime := cronExpr.Next(now)
|
||||
if nextTime.IsZero() {
|
||||
@@ -179,7 +179,7 @@ func (disp *Dispatcher) CronFunc(cronExpr *CronExpr, cb func(),onCloseTimer func
|
||||
now := time.Now()
|
||||
nextTime := cronExpr.Next(now)
|
||||
if nextTime.IsZero() {
|
||||
cb()
|
||||
cb(cron)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -191,7 +191,7 @@ func (disp *Dispatcher) CronFunc(cronExpr *CronExpr, cb func(),onCloseTimer func
|
||||
|
||||
cron.t = timewheel.NewTimerEx(interval,disp.ChanTimer,cron)
|
||||
onAddTimer(cron.t)
|
||||
cb()
|
||||
cb(cron)
|
||||
}
|
||||
cron.cb = cbFunc
|
||||
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
|
||||
}
|
||||
|
||||
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()
|
||||
ticker := NewTicker(nil,nil,funcName,onCloseTimer)
|
||||
// callback
|
||||
@@ -207,7 +207,7 @@ func (disp *Dispatcher) TickerFunc(d time.Duration, cb func(),onCloseTimer func(
|
||||
cbFunc = func() {
|
||||
ticker.t = timewheel.NewTimerEx(d,disp.ChanTimer,ticker)
|
||||
onAddTimer(ticker.t)
|
||||
cb()
|
||||
cb(ticker)
|
||||
}
|
||||
|
||||
ticker.cb = cbFunc
|
||||
|
||||
Reference in New Issue
Block a user