Go by Example: [33] Tickers
Tickers
Timer
는 특정시간 뒤에 무엇인가를 처리할때 사용하는 자원입니다. 이에반해 Tickers
는
특정 시간차를 두고 계속적으로 무엇인가를 처리할때 사용하는 자원입니다.
다음의 Ticker
예제는 개발자가 중지하기 전까지 특정 시간차동안 계속 진행하는 프로그램입니다.
package main
import "time"
import "fmt"
func main() {
ticker := time.NewTicker(time.Millisecond * 500) // [1]
go func() {
for t := range ticker.C {
fmt.Println("Tick at", t)
}
}()
time.Sleep(time.Millisecond * 1600) // [2]
ticker.Stop()
fmt.Println("Ticker stopped")
}
Ticker
는Timer
와 작동방식이 아주 유사합니다. 채널을 이용해서 값을 전송합니다.
예제에서는 0.5초마다range
문을 이용해서 값을 추출하고 있습니다.Ticker
는Timer
와 같이 중지할 수 있습니다.Ticker
가 중지되면 채널에서 더이상 데이터가
전송되지 않습니다. 예제에서는 1.6초후에Ticker
를 중지하고 있습니다.
실행하면 다음과 같습니다.
$ go run tickers.go
Tick at 2016-02-23 01:29:56.487625 -0930 KST
Tick at 2016-02-23 01:29:56.988063 -0930 KST
Tick at 2016-02-23 01:29:57.488076 -0930 KST
Ticker stopped
3번의 Ticker
가 작동한 후 중지되게 됩니다.