介绍 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)相关推荐

  1. 中国真空断续器市场现状研究分析与发展前景预测报告(2022)

    [报告篇幅]:109 [报告图表数]:150 [报告出版时间]:2021年12月 报告摘要 2021年中国真空断续器市场销售收入达到了 万元,预计2028年可以达到 万元,2022-2028期间年复合 ...

  2. Go 定时器和断续器

    1.定时器 Go语言中定时器可以实现在指定时间点执行特定的事件,定时器的实质是单向通道,time.Timer结构体类型中有一个time.Time类型的单向chan,具体声明如下: type Timer ...

  3. Golang停止ticker断续器

    1.原代码如下 package mainimport ("fmt""time" )func main() {intchan := make(chan int,1 ...

  4. go - time包的定时器/断续器

    from: https://www.kancloud.cn/digest/batu-go/153534 定时器 在time包中有两个函数可以帮助我们初始化time.Timer time.Newtime ...

  5. golang并发编程-04-通道-02-定时器、断续器

    文章目录 1. 定时器 1.1 time.NewTimer 1.2 <-time.After() 1.3 停止 1.4 定时器重置 2 断续器 2.1 断续器使用 2.2 断续器中断 1. 定时 ...

  6. go time包定时器和断续器

    定时器 在time包中有两个函数可以帮助我们初始化time.Timer time.Newtimer函数 初始化一个到期时间据此时的间隔为3小时30分的定时器 t := time.Newtimer(3* ...

  7. python简单装饰器_简单介绍Python装饰器(一)

    装饰器的作用 相信大家在 探索过程中已经了解装饰器的作用,也有很多花里胡哨的介绍. 这次小冰也来讲解一下关于Python装饰器的一些小知识. 它的作用: 性能测试 日志 安全验证 ...... 相信大 ...

  8. 简单介绍python装饰器

    这篇文章简单介绍一下python装饰器,希望对你们有所帮助. 简单正常python例子: def up(text):return text.upper() #转成大写 def lo(text):ret ...

  9. Elasticsearch介绍Kibana分词器增删改操作

    Elasticsearch Elasticsearch介绍和安装 简介 Elastic Elastic官网:https://www.elastic.co/cn/ Elastic有一条完整的产品线及解决 ...

最新文章

  1. Meta发布支持128种语言的新语音模型:指向元宇宙跨语种交流,可在线试玩
  2. matlab出现无限循环警告,[求助] 关于matlab无限循环的问题
  3. python sklearn下载了但是引用失败_关于python:导入sklearn时出错
  4. STM32通用定时器(原理、结构体、库函数、定时器中断每秒闪烁一次灯) —— 时钟源、分频值、重装载值
  5. python3 多继承搜索__init__方法的两种策略
  6. 粒子群优化算法(2)离散粒子群算法
  7. freebsd 6.2 安装配置笔记[转]
  8. 非标准语法;请使用 _使用无线AP如何供电?
  9. ssh 遍历IPS 进行连接
  10. 【转载】 ppt如何导出300dpi的高分辨率图片
  11. vf程序设计与c语言,全国计算机等级考试vf和C语言哪个更好
  12. 百度手写文字识别教程
  13. 风行 词:许巍 摄影:小虫子
  14. mysql安装出现应用程序无法正常启动(oxc000007b)的解决方案
  15. Ubuntu使用sudo apt-get upgrade升级软件出现问题后的处理
  16. 用RSA算法加密文本文件
  17. 浅谈Vue 自定义事件——原理及用法
  18. Error while adding the mapper ‘interface xx.xx.xxx.xxxx.xxxx.xxxxxxx‘ to configuration.
  19. 【C】编一程序,将两个字符串连接起来,不要用strcat函数
  20. 【Algorithm · fourth edition】均值、方差的递推公式

热门文章

  1. Kmeans 算法实例,入门必看!!!!
  2. ggplot2——柱状图
  3. Ubuntu磁盘分区和内存查看
  4. H5 3d立体相册 CSS3特性
  5. Simplesamlphp
  6. Mac彻底删除mysql,重新安装mysql,修改mysql用户权限
  7. Python脚本——信手拈来的自动化测试工具
  8. android tv盒子哪个好用,2020什么电视盒子最好?超良心的三大实用选购技巧
  9. 2017计算机研究生专业排名,2017年USNews美国大学计算机硕士研究生专业排名TOP110...
  10. 社交APP软件开发上线