тикеры

This commit is contained in:
badkaktus 2019-10-08 11:58:08 +03:00
parent e4cd9bbb7c
commit c2562c4af9
3 changed files with 17 additions and 15 deletions

View File

@ -30,7 +30,7 @@ Select
Закрытие каналов (Closing Channels) Закрытие каналов (Closing Channels)
Перебор значений из каналов (Range over Channels) Перебор значений из каналов (Range over Channels)
Таймеры (Timers) Таймеры (Timers)
Tickers Тикеры (повторения) (Tickers)
Worker Pools Worker Pools
WaitGroups WaitGroups
Rate Limiting Rate Limiting

View File

@ -1,8 +1,8 @@
// [Timers](timers) are for when you want to do // [Таймеры](timers) необходимы, когда надо выполнить
// something once in the future - _tickers_ are for when // что-то в будущем один раз, а _тикеры_ позволяют
// you want to do something repeatedly at regular // повторять действия через определенные интервалы. Вот
// intervals. Here's an example of a ticker that ticks // пример того, как тикер выводит сообщение `Tick at...`
// periodically until we stop it. // через заданный период, пока мы не остановим его.
package main package main
@ -13,10 +13,11 @@ import (
func main() { func main() {
// Tickers use a similar mechanism to timers: a // Тикеры используют тот же механизм, что и таймеры:
// channel that is sent values. Here we'll use the // канал, в который посылаются значения. Здесь мы
// `range` builtin on the channel to iterate over // будем использовать `range` для чтения данных из
// the values as they arrive every 500ms. // канала, которые будут поступать в него каждые
// 500мс.
ticker := time.NewTicker(500 * time.Millisecond) ticker := time.NewTicker(500 * time.Millisecond)
done := make(chan bool) done := make(chan bool)
@ -31,9 +32,10 @@ func main() {
} }
}() }()
// Tickers can be stopped like timers. Once a ticker // Тикеры могут быть остановлены так же как и таймеры.
// is stopped it won't receive any more values on its // Когда тикер будет остановлен, он не сможет больше
// channel. We'll stop ours after 1600ms. // принимать значения в свой канал. Мы остановим его
// через 1600мс.
time.Sleep(1600 * time.Millisecond) time.Sleep(1600 * time.Millisecond)
ticker.Stop() ticker.Stop()
done <- true done <- true

View File

@ -1,5 +1,5 @@
# When we run this program the ticker should tick 3 times # Когда мы запускаем эту программу, тикер должен выполнится
# before we stop it. # 3 раза, после чего остановиться.
$ go run tickers.go $ go run tickers.go
Tick at 2012-09-23 11:29:56.487625 -0700 PDT 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:56.988063 -0700 PDT