NewTimerScheduler 返回一个定时器调度器 ,主要创建分层定时器,并做关联,并依次启动
()
| 38 | |
| 39 | // NewTimerScheduler 返回一个定时器调度器 ,主要创建分层定时器,并做关联,并依次启动 |
| 40 | func 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 |
| 65 | func (ts *TimerScheduler) CreateTimerAt(df *DelayFunc, unixNano int64) (uint32, error) { |