两种类型的定时器:ticker和timer。两者有什么区别呢?请看如下代码:
ticker
package main
import (
"fmt"
"time"
)
func main() {
d := time.Duration(time.Second*2)
t := time.NewTicker(d)
defer t.Stop()
for {
<- t.C
fmt.Println("timeout...")
}
}
output:
timeout…
timeout…
timeout…
解析
ticker只要定义完成,从此刻开始计时,不需要任何其他的操作,每隔固定时间都会触发。
timer
package main
import (
"fmt"
"time"
)
func main() {
d := time.Duration(time.Second*2)
t := time.NewTimer(d)
defer t.Stop()
for {
<- t.C
fmt.Println("timeout...")
// need reset
t.Reset(time.Second*2)
}
}
output:
timeout…
timeout…
timeout…
解析
使用timer定时器,超时后需要重置,才能继续触发。
ticker 例子展示
package main
import (
"fmt"
"time"
)
func main() {
t := time.NewTicker(3*time.Second)
defer t.Stop()
fmt.Println(time.Now())
time.Sleep(4*time.Second)
for {
select {
case <-t.C:
fmt.Println(time.Now())
}
}
}
output:
2018-04-02 19:08:22.2797 +0800 CST
2018-04-02 19:08:26.3087 +0800 CST
2018-04-02 19:08:28.2797 +0800 CST
2018-04-02 19:08:31.2797 +0800 CST
2018-04-02 19:08:34.2797 +0800 CST
————————————————
版权声明:本文为CSDN博主「翔云123456」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lanyang123456/article/details/79794183