1. 程式人生 > >Golang timer定時器

Golang timer定時器

Golang timer定時器

 

timer 計時器

  • 用於在指定的Duration型別時間後呼叫函式或計算表示式。
  • 如果只是想指定時間之後執行,使用time.Sleep()
  • 使用NewTimer(),可以返回的Timer型別在計時器到期之前,取消該計時器
  • 直到使用<-timer.C傳送一個值,該計時器才會過期
定義計數器
timer := time.NewTimer(time.Second * 2)
停止定時器
timer.Stop()
強制的修改timer中規定的時間
timer.Reset(0) 

ticker 週期性的ticker

按照指定的週期來呼叫函式或計算表示式。 
通常會使用go新開一個執行緒,否則會

定義一個ticker
ticker := time.NewTicker(time.Millisecond * 500)
停止ticker
ticker.Stop()
Ticker觸發
For t := range ticker.C {
//do something
}

Demo

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()
}