介绍 Go 断续器(Tickers)
介绍 Go 断续器(Tickers)
本文我们介绍 Go 断续器(Tickers)以及如何在应用中有效使用断续器。当我们需要在特定时间间隔内周期性重复执行动作,我们可以使用断续器。与协程一起使用可以实现在后台周期性执行任务。
1. Ticker 与 Timer 区别
首先需要理清Ticker 与 Timer 之间的差异:
- Ticker —— 重复性执行任务非常有用呢
- Timer —— 用于执行一次性任务
2. 简单示例
下面写个简单示例,实现每秒执行一次打印语句:
package mainimport ("fmt""time"
)func main() {fmt.Println("Go Tickers 教程")// 创建新的断续器,每秒执行ticker := time.NewTicker(1 * time.Second)// 断续器每个周期内执行——打印tock、for _ = range ticker.C {fmt.Println("tock")}
}
现在运行程序会一直执行,除非ctrl-c
结束程序。
Go Tickers 教程
Tock
Tock
^C
3. 后台执行
现在我们可以使用断续器实现简单应用周期性执行任务。但如果让这些任务在后台运行呢?
如果我们需要任务在后台运行,我们可以把业务封装在协程中,让其异步执行不影响主程序。
下面我们创建backgroundTask()
函数,实现上节同样功能。然后在main函数中通过go 调用:
package mainimport ("fmt""time"
)func backgroundTask() {ticker := time.NewTicker(1 * time.Second)for _ = range ticker.C {fmt.Println("Tock")}
}func main() {fmt.Println("Go Tickers 教程")go backgroundTask()// 下面语句在第一次 `tock`被打印到控制台之前执行fmt.Println("The rest of my application can continue")// 这里空select{} 为了保持main函数一致活动// 否则backgroundTask没有机会执行select{}
}
Ok,现在执行程序,main函数正常启动,接着后台程序也启动了:
Go Tickers 教程
The rest of my application can continue
Tock
Tock
Tock
^C
4. 总结
我们学习如何使用断续器执行重复性任务,通过主线程或在后台执行任务。
介绍 Go 断续器(Tickers)相关推荐
- 中国真空断续器市场现状研究分析与发展前景预测报告(2022)
[报告篇幅]:109 [报告图表数]:150 [报告出版时间]:2021年12月 报告摘要 2021年中国真空断续器市场销售收入达到了 万元,预计2028年可以达到 万元,2022-2028期间年复合 ...
- Go 定时器和断续器
1.定时器 Go语言中定时器可以实现在指定时间点执行特定的事件,定时器的实质是单向通道,time.Timer结构体类型中有一个time.Time类型的单向chan,具体声明如下: type Timer ...
- Golang停止ticker断续器
1.原代码如下 package mainimport ("fmt""time" )func main() {intchan := make(chan int,1 ...
- go - time包的定时器/断续器
from: https://www.kancloud.cn/digest/batu-go/153534 定时器 在time包中有两个函数可以帮助我们初始化time.Timer time.Newtime ...
- golang并发编程-04-通道-02-定时器、断续器
文章目录 1. 定时器 1.1 time.NewTimer 1.2 <-time.After() 1.3 停止 1.4 定时器重置 2 断续器 2.1 断续器使用 2.2 断续器中断 1. 定时 ...
- go time包定时器和断续器
定时器 在time包中有两个函数可以帮助我们初始化time.Timer time.Newtimer函数 初始化一个到期时间据此时的间隔为3小时30分的定时器 t := time.Newtimer(3* ...
- python简单装饰器_简单介绍Python装饰器(一)
装饰器的作用 相信大家在 探索过程中已经了解装饰器的作用,也有很多花里胡哨的介绍. 这次小冰也来讲解一下关于Python装饰器的一些小知识. 它的作用: 性能测试 日志 安全验证 ...... 相信大 ...
- 简单介绍python装饰器
这篇文章简单介绍一下python装饰器,希望对你们有所帮助. 简单正常python例子: def up(text):return text.upper() #转成大写 def lo(text):ret ...
- Elasticsearch介绍Kibana分词器增删改操作
Elasticsearch Elasticsearch介绍和安装 简介 Elastic Elastic官网:https://www.elastic.co/cn/ Elastic有一条完整的产品线及解决 ...
最新文章
- Meta发布支持128种语言的新语音模型:指向元宇宙跨语种交流,可在线试玩
- matlab出现无限循环警告,[求助] 关于matlab无限循环的问题
- python sklearn下载了但是引用失败_关于python:导入sklearn时出错
- STM32通用定时器(原理、结构体、库函数、定时器中断每秒闪烁一次灯) —— 时钟源、分频值、重装载值
- python3 多继承搜索__init__方法的两种策略
- 粒子群优化算法(2)离散粒子群算法
- freebsd 6.2 安装配置笔记[转]
- 非标准语法;请使用 _使用无线AP如何供电?
- ssh 遍历IPS 进行连接
- 【转载】 ppt如何导出300dpi的高分辨率图片
- vf程序设计与c语言,全国计算机等级考试vf和C语言哪个更好
- 百度手写文字识别教程
- 风行 词:许巍 摄影:小虫子
- mysql安装出现应用程序无法正常启动(oxc000007b)的解决方案
- Ubuntu使用sudo apt-get upgrade升级软件出现问题后的处理
- 用RSA算法加密文本文件
- 浅谈Vue 自定义事件——原理及用法
- Error while adding the mapper ‘interface xx.xx.xxx.xxxx.xxxx.xxxxxxx‘ to configuration.
- 【C】编一程序,将两个字符串连接起来,不要用strcat函数
- 【Algorithm · fourth edition】均值、方差的递推公式