package main
import (
"log"
"time"
)
var count int
func main() {
ticker := time.NewTicker(time.Millisecond * 1300)
for _ = range ticker.C {
count++
log.Println(count, " ticker")
go work_long()
}
}
func work_long() {
time.Sleep(time.Second * 2)
count++
log.Println(count, " work_long")
}
这样每隔5秒执行一次, 而不是ticker设定的1秒执行一次. 如果ticker执行内容改为go work_long() . 这时候开始变为先执行5次ticker, 然后每1秒执行一次work_long(). 这是为什么呢?
1、题主要先搞清楚go work_long()这行代码到底干了什么?
go work_long()这个行代码,会开启一个goruntime,是不会阻断现有线程的。
所以
for _ = range ticker.C {
count++
log.Println(count, " ticker")
go work_long()
}
这部分会每隔ticker时间执行一次,然后开一个runtime 来执行 work_long()