Таймеры применяются, когда нужно сделать что-то один раз в будущем - tickers тогда, когда нужно делать что-то повторно с постоянным интервалом. Здесь пример счетчика тиков, который периодически тикает до тех пор, пока мы его не остановим. |
|
package main
|
|
import "time"
import "fmt"
|
|
func main() {
|
|
Счетчик тиков использует механизм, похожий на
таймер: канал, который отправляет значения. Здесь мы
используем |
ticker := time.NewTicker(time.Millisecond * 500)
go func() {
for t := range ticker.C {
fmt.Println("Tick at", t)
}
}()
|
Счетчики тиков могут быть остановлены подобно таймерам. Как только счетчик будет остановлен, больше не будет получать значения в канале. Остановим его после 1500 мсек. |
time.Sleep(time.Millisecond * 1500)
ticker.Stop()
fmt.Println("Ticker stopped")
}
|
После запуска программы счетчик должен сработать 3 раза до того, как мы остановим его. |
$ 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).