golang計時器


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 .


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM