我们线上有个服务大概有个这样一段代码跑着
```
func SyncData() {
t := time.NewTicker(time.Minute * 2)
for {
syncAllInfo()
<-t.C
}
}
```
定时更新数据,每2分钟一次;
预计未来随着数据的增多,syncAllInfo()执行可能会超过2分钟,如果syncAllInfo()执行时间过长,长期下来会怎么样?
求各位大佬解答
我知道同步数据间隔可以调大一些,但是我想弄清楚如果不调会怎么样?
[godoc.org][1]: 里面写到
NewTicker returns a new Ticker containing a channel that will send the time with a period specified by the duration argument. It adjusts the intervals or **drops ticks to make up for slow receivers**. The duration d must be greater than zero; if not, NewTicker will panic. Stop the ticker to release associated resources.
丢弃tick信息以适应反应慢的接收者, 你的情况应该影响不大吧
[1]: https://godoc.org/time#Ticker
#1
更多评论
赞,因为粗略看了下源码,往发送ticker.C发送消息是开了goroutine去发的,然后ticker.C的大小是1,如果处理不及时的话,担心发生goroutine泄露;如果官方文档这么说的话就放心了,看来源码还是得仔细看看啊:)
#2