fix: 修复 timer.GetTicker 在获取到定时器后立刻使用造成的竞态问题
This commit is contained in:
parent
d2f982bf42
commit
a4bc8280a4
|
@ -9,11 +9,7 @@ import (
|
|||
var timer = new(Timer)
|
||||
|
||||
func GetTicker(size int, options ...Option) *Ticker {
|
||||
ticker := timer.NewTicker(size)
|
||||
for _, option := range options {
|
||||
option(ticker)
|
||||
}
|
||||
return ticker
|
||||
return timer.NewTicker(size, options...)
|
||||
}
|
||||
|
||||
type Timer struct {
|
||||
|
@ -21,7 +17,7 @@ type Timer struct {
|
|||
lock sync.Mutex
|
||||
}
|
||||
|
||||
func (slf *Timer) NewTicker(size int) *Ticker {
|
||||
func (slf *Timer) NewTicker(size int, options ...Option) *Ticker {
|
||||
slf.lock.Lock()
|
||||
defer slf.lock.Unlock()
|
||||
|
||||
|
@ -37,6 +33,9 @@ func (slf *Timer) NewTicker(size int) *Ticker {
|
|||
wheel: timingwheel.NewTimingWheel(timingWheelTick, int64(size)),
|
||||
timers: make(map[string]*Scheduler),
|
||||
}
|
||||
for _, option := range options {
|
||||
option(ticker)
|
||||
}
|
||||
ticker.wheel.Start()
|
||||
return ticker
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue