Documentation ¶
Overview ¶
Package gtimer 实现了用于处理和管理间隔/延迟任务的定时器。
该包设计用于高效管理数百万计的定时任务。gtimer 和 gcron 包之间的区别如下:
- 包 gcron 是基于 gtimer 包实现的。
- gtimer 针对高性能场景设计,适用于处理数百万级别的定时任务。
- gcron 支持类似 Linux crontab 的配置模式语法,更便于人工阅读。
- gtimer 的基准操作(OP)性能以纳秒为单位衡量,而 gcron 的基准操作性能则以微秒为单位衡量。
另外,请特别注意定时器常见的延迟问题:https://github.com/golang/go/issues/14410
Index ¶
- Constants
- func SetInterval别名(ctx context.Context, interval time.Duration, job JobFunc)
- func SetTimeout别名(ctx context.Context, delay time.Duration, job JobFunc)
- func X延时加入单例循环任务(上下文 context.Context, 延时加入 time.Duration, ...)
- func X延时加入单次任务(上下文 context.Context, 延时加入 time.Duration, ...)
- func X延时加入循环任务(上下文 context.Context, 延时加入 time.Duration, ...)
- func X延时加入指定次数任务(上下文 context.Context, 延时加入 time.Duration, ...)
- func X延时加入详细循环任务(上下文 context.Context, 延时加入 time.Duration, ...)
- func X退出()
- type Entry
- func X加入单例循环任务(上下文 context.Context, 间隔时长 time.Duration, 任务函数 JobFunc) *Entry
- func X加入单次任务(上下文 context.Context, 间隔时长 time.Duration, 任务函数 JobFunc) *Entry
- func X加入循环任务(上下文 context.Context, 间隔时长 time.Duration, 任务函数 JobFunc) *Entry
- func X加入指定次数任务(上下文 context.Context, 间隔时长 time.Duration, 次数 int, ...) *Entry
- func X加入详细循环任务(上下文 context.Context, 间隔时长 time.Duration, 任务函数 JobFunc, ...) *Entry
- func (entry *Entry) X关闭任务()
- func (entry *Entry) X取任务上下文() context.Context
- func (entry *Entry) X取任务函数() JobFunc
- func (entry *Entry) X取任务状态() int
- func (entry *Entry) X开始工作()
- func (entry *Entry) X异步运行()
- func (entry *Entry) X是否单例模式() bool
- func (entry *Entry) X暂停工作()
- func (entry *Entry) X设置任务次数(次数 int)
- func (entry *Entry) X设置任务状态(状态 int) int
- func (entry *Entry) X设置单例模式(单例模式 bool)
- func (entry *Entry) X重置任务()
- type JobFunc
- type Timer
- func (t *Timer) X关闭任务()
- func (t *Timer) X加入单例循环任务(上下文 context.Context, 间隔时长 time.Duration, 任务函数 JobFunc) *Entry
- func (t *Timer) X加入单次任务(上下文 context.Context, 间隔时长 time.Duration, 任务函数 JobFunc) *Entry
- func (t *Timer) X加入循环任务(上下文 context.Context, 间隔时长 time.Duration, 任务函数 JobFunc) *Entry
- func (t *Timer) X加入指定次数任务(上下文 context.Context, 间隔时长 time.Duration, 次数 int, ...) *Entry
- func (t *Timer) X加入详细循环任务(上下文 context.Context, 间隔时长 time.Duration, 任务函数 JobFunc, ...) *Entry
- func (t *Timer) X延时加入单例循环任务(上下文 context.Context, 延时加入 time.Duration, ...)
- func (t *Timer) X延时加入单次任务(上下文 context.Context, 延时加入 time.Duration, ...)
- func (t *Timer) X延时加入循环任务(上下文 context.Context, 延时加入 time.Duration, ...)
- func (t *Timer) X延时加入指定次数任务(上下文 context.Context, 延时加入 time.Duration, ...)
- func (t *Timer) X延时加入详细循环任务(上下文 context.Context, 延时加入 time.Duration, ...)
- func (t *Timer) X开始工作()
- func (t *Timer) X暂停工作()
- type TimerOptions
Constants ¶
const ( StatusReady = 0 // Job 或 Timer 准备就绪,可以开始运行。 StatusRunning = 1 // 任务或计时器已经在运行中。 StatusStopped = 2 // Job 或 Timer 已停止。 StatusClosed = -1 // 作业或计时器已关闭,正在等待被删除。 )
Variables ¶
This section is empty.
Functions ¶
func SetInterval别名 ¶
SetInterval 每隔 `delay` 时间间隔运行 job。 它类似于 JavaScript 中的 SetInterval。
func SetTimeout别名 ¶
SetTimeout 在 `delay` 延迟时间过后执行一次任务。 它类似于 JavaScript 中的 SetTimeout。
func X延时加入单例循环任务 ¶
DelayAddSingleton 在`interval`延迟时间后添加一个定时任务。 另请参阅 AddSingleton。
func X延时加入指定次数任务 ¶
DelayAddTimes 在 `interval` 延迟后添加一个定时任务。 另请参阅 AddTimes。
Types ¶
type Entry ¶
type Entry struct {
// contains filtered or unexported fields
}
Entry 是定时任务。
func X加入详细循环任务 ¶
func X加入详细循环任务(上下文 context.Context, 间隔时长 time.Duration, 任务函数 JobFunc, 是否单例模式 bool, 次数 int, 任务状态 int) *Entry
AddEntry 向默认计时器添加一个具有详细参数的定时任务。
参数 `interval` 指定了任务的运行间隔时间。
参数 `singleton` 指定了任务是否以单例模式运行。如果任务是单例模式,那么同一任务在运行时只允许有一个实例。
参数 `times` 指定了任务运行次数的限制,这意味着当任务运行次数超过 `times` 时,该任务将退出。
参数 `status` 指定了任务首次添加到计时器时的状态。
type Timer ¶
type Timer struct {
// contains filtered or unexported fields
}
Timer 是计时器管理器,它利用滴答(ticks)来计算定时间隔。
func (*Timer) X加入详细循环任务 ¶
func (t *Timer) X加入详细循环任务(上下文 context.Context, 间隔时长 time.Duration, 任务函数 JobFunc, 是否单例模式 bool, 次数 int, 任务状态 int) *Entry
AddEntry 向定时器添加一个具有详细参数的定时任务。
参数 `interval` 指定了该任务的运行间隔时间。
参数 `singleton` 指定了任务是否以单例模式运行。如果是单例模式的任务,同一任务在运行时只允许存在一个实例。
参数 `times` 指定了任务运行次数的限制,意味着当任务运行次数超过 `times` 时,该任务将结束运行。
参数 `status` 指定了任务首次添加到定时器时的状态。
func (*Timer) X延时加入单例循环任务 ¶
func (t *Timer) X延时加入单例循环任务(上下文 context.Context, 延时加入 time.Duration, 间隔时长 time.Duration, 任务函数 JobFunc)
DelayAddSingleton在`delay`延迟时间后添加一个定时任务。 也请参阅AddSingleton。
func (*Timer) X延时加入单次任务 ¶
func (t *Timer) X延时加入单次任务(上下文 context.Context, 延时加入 time.Duration, 间隔时长 time.Duration, 任务函数 JobFunc)
DelayAddOnce在`delay`延迟时间之后添加一个定时任务。 另请参阅AddOnce。
func (*Timer) X延时加入循环任务 ¶
func (t *Timer) X延时加入循环任务(上下文 context.Context, 延时加入 time.Duration, 间隔时长 time.Duration, 任务函数 JobFunc)
DelayAdd 在 `delay` 延迟时间后添加一个定时任务。 也可参考 Add。
func (*Timer) X延时加入指定次数任务 ¶
func (t *Timer) X延时加入指定次数任务(上下文 context.Context, 延时加入 time.Duration, 间隔时长 time.Duration, 次数 int, 任务函数 JobFunc)
DelayAddTimes 在`delay`延迟时间后添加一个定时任务。 另请参阅 AddTimes。
type TimerOptions ¶
type TimerOptions struct { Interval time.Duration // (可选) Interval 是该定时器底层的滚动间隔刻度。 Quick bool // Quick 用于快速计时器,这意味着计时器不会等待第一个间隔时间过去。 }
TimerOptions 是 Timer 的配置对象。