Go语言实现定时器的方法

键盘旁的猫
键盘旁的猫
发布时间:2026-10-13| 5人浏览过
原创

本文介绍在Go语言中如何实现基础定时器。核心使用time.NewTicker创建定时器对象,配合无限循环和select语句监听通道信号来触发周期性任务。同时展示通过Goroutine异步执行多个不同周期的定时器,确保主程序不阻塞等待。

结果或目标

在Go程序中实现一个能够定期执行特定任务的机制。本示例将演示每1秒和每2秒分别打印不同的日志信息,且两个定时任务互不干扰、同步运行。

准备条件

  1. 安装并配置好Go开发环境。
  2. 创建一个新的Go源文件(例如main.go)。

真实操作顺序

第1步:引入必要的标准库包

为了处理时间间隔和输出信息,需要导入fmt和time两个包。

package main
import (
	"fmt"
	"time"
)

第2步:定义需要定时执行的业务逻辑函数

为了区分不同的定时任务,分别定义两个简单的打印函数testTimer1和testTimer2。在实际应用中,这里可以替换为真实的业务处理代码。

func testTimer1() {
	fmt.Println("test timer1")
}

func testTimer2() {
	fmt.Println("test timer2")
}

第3步:编写第一个定时器逻辑(每秒触发)

使用time.NewTicker(1 * time.Second)创建一个周期为1秒的定时器。该函数返回一个*Ticker对象,其C字段是一个通道。
在无限循环中,使用select语句监听该通道的数据到达事件。当收到信号时,调用相应的业务函数。

func timer1() {
	timer1 := time.NewTicker(1 * time.Second)
	for {
		select {
		case <-timer1.C:
			testTimer1()
		}
	}
}

第4步:编写第二个定时器逻辑(每两秒触发)

同理,创建另一个周期为2秒的定时器,并在循环中监听其通道信号,执行testTimer2函数。

func timer2() {
	timer2 := time.NewTicker(2 * time.Second)
	for {
		select {
		case <-timer2.C:
			testTimer2()
		}
	}
}

第5步:在main函数中启动定时器

为了实现并发执行,需要在main函数中将这两个定时器任务放入独立的Goroutine中运行:

  • go timer1():以协程方式启动,立即返回,不阻塞后续代码。
  • timer2():由于timer1已经由协程运行,当前行会执行timer2;而timer2内部包含无限循环,因此它会永久运行,从而保证整个进程不会退出。
func main() {
	go timer1()
	timer2()
}

完成判断

运行上述代码后,控制台将持续输出交替的日志:test timer1(每秒出现一次)和test timer2(每两秒出现一次)。若需停止程序,需手动中断进程(如Ctrl+C),因为timer2的无限循环导致主线程无法自然结束。

简要总结

以上就是Go语言实现基础定时器的详细内容,更多关于Go语言定时调度机制的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。