timer 計時器
用於在指定的Duration類型時間后調用函數或計算表達式。
如果只是想指定時間之后執行,使用time.Sleep()
使用NewTimer(),可以返回的Timer類型在計時器到期之前,取消該計時器
直到使用<-timer.C發送一個值,該計時器才會過期
定義計數器
timer := time.NewTimer(time.Second * 2)
停止定時器
timer.Stop()
強制的修改timer中規定的時間
timer.Reset(0)
間隔執行
time包中有個Ticker可以用來實現簡單的定時任務。
ticker := time.NewTicker(5 * time.Second)
for _ = range ticker.C {
fmt.Println(time.Now())
}
Ticker會在每隔一段時間執行,比如上面的例子中,每隔5秒打印一下當前時間。
package main
import (
"fmt"
"time"
"sync"
)
func main() {
ticker := time.NewTicker(5 * time.Second)
quit := make(chan int)
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
fmt.Println("child goroutine bootstrap start")
for {
select {
case <- ticker.C:
fmt.Println("ticker .")
case <- quit:
fmt.Println("work well .")
ticker.Stop()
return
}
}
fmt.Println("child goroutine bootstrap end")
}()
time.Sleep(10 * time.Second)
quit <- 1
wg.Wait()
}
打印結果:
child goroutine bootstrap start
ticker .
ticker .
work well .