MCPcopy
hub / github.com/aceld/zinx / NewTimerScheduler

Function NewTimerScheduler

ztimer/timerscheduler.go:40–62  ·  view source on GitHub ↗

NewTimerScheduler 返回一个定时器调度器 ,主要创建分层定时器,并做关联,并依次启动

()

Source from the content-addressed store, hash-verified

38
39// NewTimerScheduler 返回一个定时器调度器 ,主要创建分层定时器,并做关联,并依次启动
40func NewTimerScheduler() *TimerScheduler {
41
42 //创建秒级时间轮
43 secondTw := NewTimeWheel(SecondName, SecondInterval, SecondScales, TimersMaxCap)
44 //创建分钟级时间轮
45 minuteTw := NewTimeWheel(MinuteName, MinuteInterval, MinuteScales, TimersMaxCap)
46 //创建小时级时间轮
47 hourTw := NewTimeWheel(HourName, HourInterval, HourScales, TimersMaxCap)
48
49 //将分层时间轮做关联
50 hourTw.AddTimeWheel(minuteTw)
51 minuteTw.AddTimeWheel(secondTw)
52
53 //时间轮运行
54 secondTw.Run()
55 minuteTw.Run()
56 hourTw.Run()
57
58 return &TimerScheduler{
59 tw: hourTw,
60 triggerChan: make(chan *DelayFunc, MaxChanBuff),
61 }
62}
63
64// CreateTimerAt 创建一个定点Timer 并将Timer添加到分层时间轮中, 返回Timer的tID
65func (ts *TimerScheduler) CreateTimerAt(df *DelayFunc, unixNano int64) (uint32, error) {

Callers 2

TestNewTimerSchedulerFunction · 0.85

Calls 3

AddTimeWheelMethod · 0.95
RunMethod · 0.95
NewTimeWheelFunction · 0.85

Tested by 1

TestNewTimerSchedulerFunction · 0.68