feat: timer.Ticker 支持附加标记信息
可通过在获取定时器时的可选项 timer.WithMark(string) 对定时器进行标记,通过 Ticker.GetMark() 函数获取标记
This commit is contained in:
parent
9f1e30548a
commit
db51edfa1c
|
@ -11,3 +11,7 @@ const (
|
|||
Once = 1 // 一次
|
||||
Instantly = 0 // 立刻
|
||||
)
|
||||
|
||||
const (
|
||||
NoMark = "" // 没有设置标记的定时器
|
||||
)
|
||||
|
|
|
@ -8,3 +8,10 @@ func WithCaller(handle func(name string, caller func())) Option {
|
|||
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"
|
||||
)
|
||||
|
||||
// Ticker 管理器
|
||||
// Ticker 定时器
|
||||
type Ticker struct {
|
||||
timer *Timer
|
||||
wheel *timingwheel.TimingWheel
|
||||
timers map[string]*Scheduler
|
||||
lock sync.RWMutex
|
||||
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() {
|
||||
slf.timer.lock.Lock()
|
||||
defer slf.timer.lock.Unlock()
|
||||
|
||||
slf.lock.Lock()
|
||||
|
||||
slf.mark = ""
|
||||
for name, scheduler := range slf.timers {
|
||||
scheduler.close()
|
||||
delete(slf.timers, name)
|
||||
|
|
Loading…
Reference in New Issue