定时类

package
v0.0.0-...-2910145 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 14, 2024 License: MIT Imports: 10 Imported by: 0

Documentation

Overview

Package gtimer 实现了用于处理和管理间隔/延迟任务的定时器。

该包设计用于高效管理数百万计的定时任务。gtimer 和 gcron 包之间的区别如下:

  1. 包 gcron 是基于 gtimer 包实现的。
  2. gtimer 针对高性能场景设计,适用于处理数百万级别的定时任务。
  3. gcron 支持类似 Linux crontab 的配置模式语法,更便于人工阅读。
  4. gtimer 的基准操作(OP)性能以纳秒为单位衡量,而 gcron 的基准操作性能则以微秒为单位衡量。

另外,请特别注意定时器常见的延迟问题:https://github.com/golang/go/issues/14410

Index

Constants

View Source
const (
	StatusReady   = 0  // Job 或 Timer 准备就绪,可以开始运行。
	StatusRunning = 1  // 任务或计时器已经在运行中。
	StatusStopped = 2  // Job 或 Timer 已停止。
	StatusClosed  = -1 // 作业或计时器已关闭,正在等待被删除。

)

Variables

This section is empty.

Functions

func SetInterval别名

func SetInterval别名(ctx context.Context, interval time.Duration, job JobFunc)

SetInterval 每隔 `delay` 时间间隔运行 job。 它类似于 JavaScript 中的 SetInterval。

func SetTimeout别名

func SetTimeout别名(ctx context.Context, delay time.Duration, job JobFunc)

SetTimeout 在 `delay` 延迟时间过后执行一次任务。 它类似于 JavaScript 中的 SetTimeout。

func X延时加入单例循环任务

func X延时加入单例循环任务(上下文 context.Context, 延时加入 time.Duration, 间隔时长 time.Duration, 任务函数 JobFunc)

DelayAddSingleton 在`interval`延迟时间后添加一个定时任务。 另请参阅 AddSingleton。

func X延时加入单次任务

func X延时加入单次任务(上下文 context.Context, 延时加入 time.Duration, 间隔时长 time.Duration, 任务函数 JobFunc)

DelayAddOnce在`interval`延迟时间后添加一个定时任务。 另请参阅AddOnce。

func X延时加入循环任务

func X延时加入循环任务(上下文 context.Context, 延时加入 time.Duration, 间隔时长 time.Duration, 任务函数 JobFunc)

DelayAdd 在 `interval` 延迟时间后添加一个定时任务。 另请参阅 Add。

func X延时加入指定次数任务

func X延时加入指定次数任务(上下文 context.Context, 延时加入 time.Duration, 间隔时长 time.Duration, 次数 int, 任务函数 JobFunc)

DelayAddTimes 在 `interval` 延迟后添加一个定时任务。 另请参阅 AddTimes。

func X延时加入详细循环任务

func X延时加入详细循环任务(上下文 context.Context, 延时加入 time.Duration, 间隔时长 time.Duration, 任务函数 JobFunc, 是否单例模式 bool, 次数 int, 任务状态 int)

DelayAddEntry 在 `interval` 延迟后添加一个定时任务。 也可参考 AddEntry。

func X退出

func X退出()

Exit 在内部被用于定时任务,它会退出并标记该任务从计时器中关闭。 之后,该定时任务将自动从计时器中移除。它内部使用了“panic-recover”机制 实现此功能,旨在简化并方便使用。

Types

type Entry

type Entry struct {
	// contains filtered or unexported fields
}

Entry 是定时任务。

func X加入单例循环任务

func X加入单例循环任务(上下文 context.Context, 间隔时长 time.Duration, 任务函数 JobFunc) *Entry

AddSingleton 是一个用于添加单例模式任务的便捷函数。

func X加入单次任务

func X加入单次任务(上下文 context.Context, 间隔时长 time.Duration, 任务函数 JobFunc) *Entry

AddOnce 是一个便捷函数,用于添加一个仅运行一次然后退出的任务。

func X加入循环任务

func X加入循环任务(上下文 context.Context, 间隔时长 time.Duration, 任务函数 JobFunc) *Entry

Add 将一个定时任务添加到默认计时器,该计时器以`interval`为间隔运行。

func X加入指定次数任务

func X加入指定次数任务(上下文 context.Context, 间隔时长 time.Duration, 次数 int, 任务函数 JobFunc) *Entry

AddTimes 是一个便捷函数,用于添加有一定运行次数限制的任务。

func X加入详细循环任务

func X加入详细循环任务(上下文 context.Context, 间隔时长 time.Duration, 任务函数 JobFunc, 是否单例模式 bool, 次数 int, 任务状态 int) *Entry

AddEntry 向默认计时器添加一个具有详细参数的定时任务。

参数 `interval` 指定了任务的运行间隔时间。

参数 `singleton` 指定了任务是否以单例模式运行。如果任务是单例模式,那么同一任务在运行时只允许有一个实例。

参数 `times` 指定了任务运行次数的限制,这意味着当任务运行次数超过 `times` 时,该任务将退出。

参数 `status` 指定了任务首次添加到计时器时的状态。

func (*Entry) X关闭任务

func (entry *Entry) X关闭任务()

Close 关闭作业,随后该作业将从计时器中移除。

func (*Entry) X取任务上下文

func (entry *Entry) X取任务上下文() context.Context

Ctx 返回此任务初始化后的上下文。

func (*Entry) X取任务函数

func (entry *Entry) X取任务函数() JobFunc

Job 返回此任务的工作函数。

func (*Entry) X取任务状态

func (entry *Entry) X取任务状态() int

Status 返回作业的状态。

func (*Entry) X开始工作

func (entry *Entry) X开始工作()

Start 启动任务。

func (*Entry) X异步运行

func (entry *Entry) X异步运行()

Run 启动计时器任务并异步执行。

func (*Entry) X是否单例模式

func (entry *Entry) X是否单例模式() bool

IsSingleton 检查并返回该任务是否处于单例模式。

func (*Entry) X暂停工作

func (entry *Entry) X暂停工作()

Stop 停止作业。

func (*Entry) X设置任务次数

func (entry *Entry) X设置任务次数(次数 int)

SetTimes 设置作业的最大运行次数。

func (*Entry) X设置任务状态

func (entry *Entry) X设置任务状态(状态 int) int

SetStatus 自定义设置任务的状态。

func (*Entry) X设置单例模式

func (entry *Entry) X设置单例模式(单例模式 bool)

SetSingleton 设置作业单例模式。

func (*Entry) X重置任务

func (entry *Entry) X重置任务()

Reset 重置作业,这将重置其下一次运行的滴答次数。

type JobFunc

type JobFunc = func(ctx context.Context)

JobFunc 是在定时器中被定时调用的任务函数。

type Timer

type Timer struct {
	// contains filtered or unexported fields
}

Timer 是计时器管理器,它利用滴答(ticks)来计算定时间隔。

func X创建

func X创建(选项 ...TimerOptions) *Timer

New 创建并返回一个 Timer。

func (*Timer) X关闭任务

func (t *Timer) X关闭任务()

Close 关闭计时器。

func (*Timer) X加入单例循环任务

func (t *Timer) X加入单例循环任务(上下文 context.Context, 间隔时长 time.Duration, 任务函数 JobFunc) *Entry

AddSingleton 是一个用于添加单例模式任务的便捷函数。

func (*Timer) X加入单次任务

func (t *Timer) X加入单次任务(上下文 context.Context, 间隔时长 time.Duration, 任务函数 JobFunc) *Entry

AddOnce 是一个便捷函数,用于添加一个仅运行一次然后退出的任务。

func (*Timer) X加入循环任务

func (t *Timer) X加入循环任务(上下文 context.Context, 间隔时长 time.Duration, 任务函数 JobFunc) *Entry

Add 向定时器添加一个计时任务,该任务以 `interval` 为间隔运行。

func (*Timer) X加入指定次数任务

func (t *Timer) X加入指定次数任务(上下文 context.Context, 间隔时长 time.Duration, 次数 int, 任务函数 JobFunc) *Entry

AddTimes 是一个便捷函数,用于添加有一定运行次数限制的任务。

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。

func (*Timer) X延时加入详细循环任务

func (t *Timer) X延时加入详细循环任务(上下文 context.Context, 延时加入 time.Duration, 间隔时长 time.Duration, 任务函数 JobFunc, 是否单例模式 bool, 次数 int, 任务状态 int)

DelayAddEntry 在`delay`延迟时间后添加一个定时任务。 也可参考 AddEntry。

func (*Timer) X开始工作

func (t *Timer) X开始工作()

Start 开始计时器。

func (*Timer) X暂停工作

func (t *Timer) X暂停工作()

Stop 停止定时器。

type TimerOptions

type TimerOptions struct {
	Interval time.Duration // (可选) Interval 是该定时器底层的滚动间隔刻度。
	Quick    bool          // Quick 用于快速计时器,这意味着计时器不会等待第一个间隔时间过去。
}

TimerOptions 是 Timer 的配置对象。

func X取单例对象

func X取单例对象() TimerOptions

DefaultOptions 创建并返回一个用于创建Timer的默认选项对象。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL