Skip to content

Latest commit

 

History

History
53 lines (36 loc) · 2.54 KB

7_timer.md

File metadata and controls

53 lines (36 loc) · 2.54 KB

Таймер, Тикер

Зарим кодыг ирдээдүйн тодорхой цагт эсвэл тодорхой давтамжаар ажиллуулах шаардлага гардаг. Go хэлний time сангийн Timer, Ticker классуудын тусламжтайгаар үүнийг хялбархан хийх боломжтой.

Таймер

Таймер нь ирээдүйд цаг товлоход зориулагдсан. Таймерт хүлээх цагаа тохируулж өгнө, ингээд болзсон цаг болмогц мэдээлэх болно.

Жишээлбэл 2 секунд хүлээхээр таймерыг тохируулая:

package main
import "time"

func main() {
    timer := time.NewTimer(time.Second * 2)
    <- timer.C
    println("Цаг боллоо")
}

<- timer.C мөр дээр таймерын C сувгаас цаг болсон тухай дохио ирэхийг хүлээж байна.

Зөвхөн тодорхой хугацаагаар хүлээх зорилготой бол time.Sleep() функцийг ашиглахад хангалттай.
Гэхдээ таймерын давуу тал нь цаг болохоос өмнө зогсоох боломжтой байдаг.

timer := time.NewTimer(time.Second)

go func() {
   <- timer.C
   println("Цаг боллоо")
}()

stop := timer.Stop()
println("Таймер цуцлагдсан уу ?", stop)

timer.Stop() функц нь цаг болохоос өмнө таймерыг зогсоох боломж олгоно. Хэрэв энэ функцийг дуудах үед таймер аль хэдийн зогссон байвал false утга буцаадаг.

Тикер

Тикер нь ямар нэг зүйлийг тодорхой хугацааны зайтай давтаж хийх үед хэрэглэгдэнэ. Дараах жишээнд 1 минут тутамд statusUpdate() функцийг дуудаж байна.

c := time.Tick(1 * time.Minute)
for now := range c {
      fmt.Printf("%v %s\n", now, statusUpdate())
}

c хувьсагч нь тикерээс дохио ирэхийг хүлээх суваг юм. Дээрх тикер тасралтгүй ажиллаж 1 минут тутамд дохио илгээх болно. Тиймээс програм for давталт дээр хүлээлтэд орно. Үүнээс сэргийлэхийн тулд давталтыг go функц дотор байрлуулж болно.