Timers and Tickers
Timer va Ticker
time.Timer — bir martalik "budilnik": belgilangan vaqtdan keyin bir marta signal beradi. time.Ticker esa — takroriy "metronom": har bir belgilangan oraliqda qayta-qayta signal beradi.
package main
import (
"fmt"
"time"
)
func main() {
timer := time.NewTimer(10 * time.Millisecond)
<-timer.C
fmt.Println("timer ishga tushdi")
ticker := time.NewTicker(5 * time.Millisecond)
count := 0
for range ticker.C {
count++
if count == 3 {
ticker.Stop()
break
}
}
fmt.Println("ticker signallari:", count)
}timer.C — kanal (channel, buni Concurrency Fundamentals kursida chuqurroq ko'rgansiz); belgilangan vaqt o'tgach, bu kanaldan bitta qiymat keladi, <-timer.C esa aynan shu kelishini kutadi. ticker.C esa har oraliqda qayta-qayta signal beradi — shuning uchun uni for range bilan aylantiramiz va kerak bo'lganda ticker.Stop() bilan to'xtatamiz (aks holda u abadiy ishlab turadi).
>_ Exercise
Timer va Ticker'ni birga ishlatib ko'ring.
- •5 millisekundlik time.NewTimer yarating va uning signalini kuting
- •"tayyor" deb chop eting
- •3 millisekundlik Ticker bilan 4 marta signal kutib, sanoq oxirida ticker'ni to'xtating
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
time.Timer — bir martalik, time.Ticker — takroriy vaqt signali; ikkalasi ham kanal orqali "vaqt keldi" deb xabar beradi.
NEXT UP
Sorting Basics
$ go run main.go
Kodingizni ishga tushiring