|
Časovače jsou pro situace kdy chcete něco udělat jednou v budoucnu - opakující časovače tickers jsou pro situace kdy chcete něco provádět opakovaně v pravidelném interalu. Tady je příkad opakujícího se časovače který tiká periodicky dokud ho nezastavíme. |
|
package main
|
|
import "time"
import "fmt"
|
|
func main() {
|
|
|
Opakující časovače používají podobný mechanismus
jako běžné časovače: kanál kterému je posílaná
hodnota. Zde použijeme zabudovaný příkaz |
ticker := time.NewTicker(500 * time.Millisecond)
go func() {
for t := range ticker.C {
fmt.Println("Tik v", t)
}
}()
|
|
Opakující časovače je možné stejně jako běžné časovače zastavit. Jakmile je časovač zastavený už nedostane do kanálu žádnou další hodnotu. Náš zastavíme po 1600ms. |
time.Sleep(1600 * time.Millisecond)
ticker.Stop()
fmt.Println("Ticker zastaven")
}
|
|
Když spustíme tento program, časovač by měl tiknout 3 krát předtím, než ho zastavíme. |
$ go run tickers.go
Tik v 2009-11-10 23:00:00.5 +0000 UTC m=+0.500000001
Tik v 2009-11-10 23:00:01 +0000 UTC m=+1.000000001
Tik v 2009-11-10 23:00:01.5 +0000 UTC m=+1.500000001
Ticker zastaven
|
Další příklad: Zásobníky pracovních rutin (worker pools).