2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 介绍 Go 断续器(Tickers)

介绍 Go 断续器(Tickers)

时间:2020-02-18 10:17:09

相关推荐

介绍 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 教程TockTock^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 continueTockTockTock^C

4. 总结

我们学习如何使用断续器执行重复性任务,通过主线程或在后台执行任务。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。