Skip to content
/ quartz Public

A scheduling framework implemented using timewheels. 基于层级时间轮实现的定时调度框架; 零依赖第三方包

License

Notifications You must be signed in to change notification settings

maolinc/quartz

Repository files navigation

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)

About

A scheduling framework implemented using timewheels. 基于层级时间轮实现的定时调度框架; 零依赖第三方包

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages