go使用定时器
package main
import (
"fmt"
"os"
"os/signal"
"syscall"
"time"
)
func main() {
initTask()
}
func stop(ticker *time.Ticker) {
// 创建一个通道来接收信号
sigCh := make(chan os.Signal, 1)
// 监听指定的信号
signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM)
// 启动一个 goroutine 来处理接收到的信号
go func() {
// 等待信号
sig := <-sigCh
fmt.Println("接收到信号:%v\n", sig)
defer ticker.Stop()
fmt.Println("关闭程序")
// 退出程序
os.Exit(0)
}()
}
func initTask() {
// 创建一个定时器,每隔一秒执行一次
ticker := time.NewTicker(1 * time.Second)
//系统关闭时关闭定时器
stop(ticker)
// 使用匿名函数作为定时任务的执行逻辑
go func() {
for {
select {
case <-ticker.C:
// 在这里编写你的定时任务逻辑
fmt.Println("定时任务执行时间:", time.Now())
}
}
}()
// 主goroutine继续执行其他逻辑
select {}
}
标签:定时器,信号,syscall,func,使用,go,os,sigCh
From: https://blog.51cto.com/u_13626606/8352228