time.NewTicker定時器


NewTicker 返回一個新的 Ticker。

ticker.C:
該 Ticker 包含一個通道字段,並會每隔時間段 d 就向該通道發送當時的時間。向其自身的 C 字段發送當時的時間。
它會調整時間間隔或者丟棄 tick 信息以適應反應慢的接收者。
如果d <= 0會觸發panic。關閉該 Ticker 可以釋放相關資源。
ticker.Reset:
Reset 使 t 重新開始計時,(本方法返回后再)等待時間段 d 過去后到期。
ticker.Stop:
停止定時器

1.定時器

package main

import (
    "fmt"
    "time"
)

func main() {

    //創建一個周期性的定時器
    ticker := time.NewTicker(3 * time.Second)
    fmt.Println("當前時間為:", time.Now())

    go func() {
        for {

            //從定時器中獲取數據
            t := <-ticker.C
            fmt.Println("當前時間為:", t)

        }
    }()

    for {
        time.Sleep(time.Second * 1)
    }
}

2.停止定時器

package main

import (
    "fmt"
    "runtime"
    "time"
)

func main() {

    //創建一個周期性的定時器
    ticker := time.NewTicker(3 * time.Second)

    //定義計數器
    count := 1
    fmt.Println("當前時間為:", time.Now(), "count = ", count)

    go func() {
        for {
            //從定時器中獲取數據
            t := <-ticker.C
            count++
            fmt.Println("當前時間為:", t, "count = ", count)
            if count == 10 {
                /**
                如果周期性定時被消費10次后就停止該定時器
                */
                ticker.Stop()
                runtime.Goexit()
            }
        }
    }()

    for {
        time.Sleep(time.Second * 1)
    }
}

 


免責聲明!

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



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