таймеры
This commit is contained in:
parent
33465a0288
commit
e4cd9bbb7c
@ -28,8 +28,8 @@ Select
|
|||||||
Тайм-ауты (Timeouts)
|
Тайм-ауты (Timeouts)
|
||||||
Неблокируемые операции в каналах (Non-Blocking Channel Operations)
|
Неблокируемые операции в каналах (Non-Blocking Channel Operations)
|
||||||
Закрытие каналов (Closing Channels)
|
Закрытие каналов (Closing Channels)
|
||||||
Range over Channels
|
Перебор значений из каналов (Range over Channels)
|
||||||
Timers
|
Таймеры (Timers)
|
||||||
Tickers
|
Tickers
|
||||||
Worker Pools
|
Worker Pools
|
||||||
WaitGroups
|
WaitGroups
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// We often want to execute Go code at some point in the
|
// Часто мы хотим выполнить код Go в какой-то момент в
|
||||||
// future, or repeatedly at some interval. Go's built-in
|
// будущем или повторно через определенный промежуток
|
||||||
// _timer_ and _ticker_ features make both of these tasks
|
// времени. Встроенные функции _таймера_ и _тикера_ Go
|
||||||
// easy. We'll look first at timers and then
|
// облегчают обе эти задачи. Сначала мы рассмотрим
|
||||||
// at [tickers](tickers).
|
// таймеры, а затем [тикеры](tickers).
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
@ -13,22 +13,22 @@ import (
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
||||||
// Timers represent a single event in the future. You
|
// Таймеры позволяет выполнить одно событие в будущем.
|
||||||
// tell the timer how long you want to wait, and it
|
// Вы сообщаете таймеру, как долго вы хотите ждать,
|
||||||
// provides a channel that will be notified at that
|
// и он предоставляет канал, который будет уведомлен
|
||||||
// time. This timer will wait 2 seconds.
|
// в это время. Этот таймер будет ждать 2 секунды.
|
||||||
timer1 := time.NewTimer(2 * time.Second)
|
timer1 := time.NewTimer(2 * time.Second)
|
||||||
|
|
||||||
// The `<-timer1.C` blocks on the timer's channel `C`
|
// `<-timer1.C` блокирует канал таймера `C` пока
|
||||||
// until it sends a value indicating that the timer
|
// не будет отправлено сообщение о том, что таймер истек
|
||||||
// expired.
|
|
||||||
<-timer1.C
|
<-timer1.C
|
||||||
fmt.Println("Timer 1 expired")
|
fmt.Println("Timer 1 expired")
|
||||||
|
|
||||||
// If you just wanted to wait, you could have used
|
// Если бы вы просто хотели подождать, вы могли бы
|
||||||
// `time.Sleep`. One reason a timer may be useful is
|
// использовать `time.Sleep`. Одна из причин, по
|
||||||
// that you can cancel the timer before it expires.
|
// которой таймер может быть полезен, заключается
|
||||||
// Here's an example of that.
|
// в том, что вы можете отменить таймер до его
|
||||||
|
// истечения, как в этом примере.
|
||||||
timer2 := time.NewTimer(time.Second)
|
timer2 := time.NewTimer(time.Second)
|
||||||
go func() {
|
go func() {
|
||||||
<-timer2.C
|
<-timer2.C
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
// The first timer will expire ~2s after we start the
|
// Первый таймер истекает через ~2с после запуска программы,
|
||||||
// program, but the second should be stopped before it has
|
// но второй должен быть остановлен до того, как он истечет.
|
||||||
// a chance to expire.
|
|
||||||
$ go run timers.go
|
$ go run timers.go
|
||||||
Timer 1 expired
|
Timer 1 expired
|
||||||
Timer 2 stopped
|
Timer 2 stopped
|
||||||
|
Loading…
x
Reference in New Issue
Block a user