2019-10-08 11:58:08 +03:00

44 lines
1.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// [Таймеры](timers) необходимы, когда надо выполнить
// что-то в будущем один раз, а _тикеры_ позволяют
// повторять действия через определенные интервалы. Вот
// пример того, как тикер выводит сообщение `Tick at...`
// через заданный период, пока мы не остановим его.
package main
import (
"fmt"
"time"
)
func main() {
// Тикеры используют тот же механизм, что и таймеры:
// канал, в который посылаются значения. Здесь мы
// будем использовать `range` для чтения данных из
// канала, которые будут поступать в него каждые
// 500мс.
ticker := time.NewTicker(500 * time.Millisecond)
done := make(chan bool)
go func() {
for {
select {
case <-done:
return
case t := <-ticker.C:
fmt.Println("Tick at", t)
}
}
}()
// Тикеры могут быть остановлены так же как и таймеры.
// Когда тикер будет остановлен, он не сможет больше
// принимать значения в свой канал. Мы остановим его
// через 1600мс.
time.Sleep(1600 * time.Millisecond)
ticker.Stop()
done <- true
fmt.Println("Ticker stopped")
}