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")
}
  1. TickerTimer와 작동방식이 아주 유사합니다. 채널을 이용해서 값을 전송합니다.
    예제에서는 0.5초마다 range 문을 이용해서 값을 추출하고 있습니다.
  2. TickerTimer와 같이 중지할 수 있습니다. 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가 작동한 후 중지되게 됩니다.