Go by Example: [32] Timers
Timers
프로그램을 작성하다 보면, 간혹 특정 시간 이후에 Go Code
가 실행되길 원할때가 있습니다.
또는, 특정시간 대기 후에 계속적으로 실행할 경우도 존재합니다.
Go
에서는 timer
와 ticker
기능을 기본적으로 제공해서 쉽게 처리할 수 있도록 하고 있습니다.
이 중에서 먼저, tickers
에 대해서 알아보도록 하겠습니다.
package main
import "time"
import "fmt"
func main() {
timer1 := time.NewTimer(time.Second * 2) // [1]
<-timer1.C // [2]
fmt.Println("Timer 1 expired")
timer2 := time.NewTimer(tiem.Second) // [3]
go func() {
<-timer2.C
fmt.Println("Timer 2 expired")
}()
stop2 := timer2.Stop()
if stop2 {
fmt.Println("Timer 2 stopped")
}
}
- 타이머는 앞으로 일어날 이벤트 처리에 사용할 수 있습니다. 타이머를 생성하고 몇초를 대기할 지를
지정한 후, 정해진 시간에 특정행동을 할 수 있습니다. (타이머는 채널
을 제공합니다.)
예제에서 타이머는 2초를 대기하도록 설정합니다. <-timer1.C
는 타이머의C
채널을 블럭하고 전송처리를 한 후에 타이머에 만료 표식을 합니다.- 단지 특정시간만 대기하기를 원한다면,
timer.Sleep()
함수를 사용하면 됩니다.
타이머가 유용한 기능 중 하나는 타이머가 완료되기 전에 취소할 수 있다는 것입니다.
실행하면 다음과 같습니다.
$ go run timers.go
Timer 1 expired
Timer 2 stopped
처음 타이머는 프로그램이 실행되고 2초후 만료되고, 타이머2는 만료되기 전에 중지시켰습니다.