概念簡介
我們常常需要在後麵一個時刻運行 Go 語言代碼,或者在某段時間
間隔內重複運行。Go 的內置定時器 和 打點器 特性讓這
些很容易實現。我們將先學習定時器,然後再學習打點器。
例程代碼
package main
import "time"
import "fmt"
func main() {
// 定時器表示在未來某一時刻的獨立事件。你告訴定時器
// 需要等待的時間,然後它將提供一個用於通知的通道。
// 這裏的定時器將等待 2 秒。
timer1 := time.NewTimer(time.Second * 2)
// `<-timer1.C` 直到這個定時器的通道 `C` 明確的發送了
// 定時器失效的值之前,將一直阻塞。
<-timer1.C
fmt.Println("Timer 1 expired")
// 如果你需要的僅僅是單純的等待,你需要使用 `time.Sleep`。
// 定時器是有用原因之一就是你可以在定時器失效之前,取消這個
// 定時器。這是一個例子
timer2 := time.NewTimer(time.Second)
go func() {
<-timer2.C
fmt.Println("Timer 2 expired")
}()
stop2 := timer2.Stop()
if stop2 {
fmt.Println("Timer 2 stopped")
}
}
執行&輸出
// 第一個定時器將在程序開始後 ~2s 失效,但是第二個在它
// 沒失效之前就停止了。
$ go run timers.go
Timer 1 expired
Timer 2 stopped
課程導航
學習上一篇:Go語言教程:通道遍曆 學習下一篇:Go語言教程:打點器
相關資料
本例程github源代碼:https://github.com/xg-wang/gobyexample/tree/master/examples/timers