feat: timer.Ticker 支持附加标记信息
可通过在获取定时器时的可选项 timer.WithMark(string) 对定时器进行标记,通过 Ticker.GetMark() 函数获取标记
This commit is contained in:
parent
9f1e30548a
commit
db51edfa1c
|
@ -11,3 +11,7 @@ const (
|
||||||
Once = 1 // 一次
|
Once = 1 // 一次
|
||||||
Instantly = 0 // 立刻
|
Instantly = 0 // 立刻
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
NoMark = "" // 没有设置标记的定时器
|
||||||
|
)
|
||||||
|
|
|
@ -8,3 +8,10 @@ func WithCaller(handle func(name string, caller func())) Option {
|
||||||
ticker.handle = handle
|
ticker.handle = handle
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WithMark 通过特定的标记创建定时器
|
||||||
|
func WithMark(mark string) Option {
|
||||||
|
return func(ticker *Ticker) {
|
||||||
|
ticker.mark = mark
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -8,22 +8,29 @@ import (
|
||||||
"github.com/RussellLuo/timingwheel"
|
"github.com/RussellLuo/timingwheel"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Ticker 管理器
|
// Ticker 定时器
|
||||||
type Ticker struct {
|
type Ticker struct {
|
||||||
timer *Timer
|
timer *Timer
|
||||||
wheel *timingwheel.TimingWheel
|
wheel *timingwheel.TimingWheel
|
||||||
timers map[string]*Scheduler
|
timers map[string]*Scheduler
|
||||||
lock sync.RWMutex
|
lock sync.RWMutex
|
||||||
handle func(name string, caller func())
|
handle func(name string, caller func())
|
||||||
|
mark string
|
||||||
}
|
}
|
||||||
|
|
||||||
// Release 释放管理器,并将管理器重新放回 Timer 池中
|
// Mark 获取定时器的标记
|
||||||
|
// - 通常用于鉴别定时器来源
|
||||||
|
func (slf *Ticker) Mark() string {
|
||||||
|
return slf.mark
|
||||||
|
}
|
||||||
|
|
||||||
|
// Release 释放定时器,并将定时器重新放回 Timer 池中
|
||||||
func (slf *Ticker) Release() {
|
func (slf *Ticker) Release() {
|
||||||
slf.timer.lock.Lock()
|
slf.timer.lock.Lock()
|
||||||
defer slf.timer.lock.Unlock()
|
defer slf.timer.lock.Unlock()
|
||||||
|
|
||||||
slf.lock.Lock()
|
slf.lock.Lock()
|
||||||
|
slf.mark = ""
|
||||||
for name, scheduler := range slf.timers {
|
for name, scheduler := range slf.timers {
|
||||||
scheduler.close()
|
scheduler.close()
|
||||||
delete(slf.timers, name)
|
delete(slf.timers, name)
|
||||||
|
|
Loading…
Reference in New Issue