Skip to content

Latest commit

 

History

History
53 lines (47 loc) · 1.4 KB

README.md

File metadata and controls

53 lines (47 loc) · 1.4 KB

1.quartz

基于层级时间轮实现的定时调度框架; 零依赖第三方包

2.使用

go get -u github.com/maolinc/quartz
// 创建调度器,tick间隔周期, wheelSize时间轮格子
scheduler := NewTimingWheel(tick time.Duration, wheelSize int64)
  1. 单次任务
scheduler := NewTimingWheel(time.Millisecond*10, 60)
scheduler.Run()
result := scheduler.AfterFunc(time.Second, func(ctx context.Context) {
    // todo
})
// 停止任务
result.Stop()
  1. 周期任务
scheduler := NewTimingWheel(time.Millisecond*10, 60)
scheduler.Run()
// 任务1
result := scheduler.ScheduleFunc(time.Second, func(ctx context.Context) {
    // todo
})
// 任务2
result2 := scheduler.ScheduleFunc(time.Second, func(ctx context.Context) {
    // todo
})
// 暂停
result.Pause()
// 继续
result.Continue()
// 停止任务,只会停止任务1,任务停止后对任务在操作便失效
result.Stop()

// 停止所有任务
scheduler.Stop()

3.架构

无标题

使用延时队列解决空转性能消耗,所有任务都存放在链表中,即任务的添加和删除时间复杂度O(1)