GoDasturchi
Timers and Tickers

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.

example.go
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.

Hints (0/3)

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

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

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.

example.go
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.

Hints (0/3)

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