Go by Example မြန်မာဘာသာ: Tickers

Timer တွေက အနာဂတ်မှာ တစ်ကြိမ်တည်း တစ်ခုခုလုပ်ချင်တဲ့အခါ သုံးပါတယ် - ticker တွေကတော့ ပုံမှန် တစ်ခုခုကို ထပ်ခါထပ်ခါလုပ်ချင်တဲ့အချိန်မှာ သုံးပါတယ်။ ဒီမှာ ကျွန်တော်တို့ မရပ်ခိုင်းမချင်း ပုံမှန် tick လုပ်နေမယ့် ticker တစ်ခုရဲ့ ဥပမာကို ပြထားပါတယ်။

package main
import (
    "fmt"
    "time"
)
func main() {

Ticker တွေက timer တွေနဲ့ ဆင်တူတဲ့ နည်းလမ်းကို သုံးပါတယ်: တန်ဖိုးတွေ ပို့ပေးတဲ့ channel တစ်ခုပါ။ ဒီမှာတော့ channel ပေါ်မှာ select builtin ကိုသုံးပြီး 500ms တိုင်း ရောက်လာမယ့် တန်ဖိုးတွေကို စောင့်ပါမယ်။

    ticker := time.NewTicker(500 * time.Millisecond)
    done := make(chan bool)
    go func() {
        for {
            select {
            case <-done:
                return
            case t := <-ticker.C:
                fmt.Println("Tick at", t)
            }
        }
    }()

Ticker တွေကို timer တွေလိုပဲ ရပ်တန့်လို့ရပါတယ်။ Ticker တစ်ခုကို ရပ်တန့်လိုက်ပြီဆိုရင် သူ့ရဲ့ channel ပေါ်မှာ နောက်ထပ်တန်ဖိုးတွေ လက်ခံတော့မှာ မဟုတ်ပါဘူး။ ကျွန်တော်တို့ရဲ့ ticker ကို 1600ms အကြာမှာ ရပ်တန့်ပါမယ်။

    time.Sleep(1600 * time.Millisecond)
    ticker.Stop()
    done <- true
    fmt.Println("Ticker stopped")
}

ဒီပရိုဂရမ်ကို run တဲ့အခါ ticker က ကျွန်တော်တို့ မရပ်တန့်ခင် 3 ကြိမ် tick လုပ်ပါလိမ့်မယ်။

$ go run tickers.go
Tick at 2012-09-23 11:29:56.487625 -0700 PDT
Tick at 2012-09-23 11:29:56.988063 -0700 PDT
Tick at 2012-09-23 11:29:57.488076 -0700 PDT
Ticker stopped

နောက်ဥပမာ: Worker Pools.