Go by Example: [32] Timers

Timers

프로그램을 작성하다 보면, 간혹 특정 시간 이후에 Go Code가 실행되길 원할때가 있습니다.
또는, 특정시간 대기 후에 계속적으로 실행할 경우도 존재합니다.
Go에서는 timerticker 기능을 기본적으로 제공해서 쉽게 처리할 수 있도록 하고 있습니다.
이 중에서 먼저, 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")
    }
}
  1. 타이머는 앞으로 일어날 이벤트 처리에 사용할 수 있습니다. 타이머를 생성하고 몇초를 대기할 지를
    지정한 후, 정해진 시간에 특정행동을 할 수 있습니다. (타이머는 채널을 제공합니다.)
    예제에서 타이머는 2초를 대기하도록 설정합니다.
  2. <-timer1.C는 타이머의 C채널을 블럭하고 전송처리를 한 후에 타이머에 만료 표식을 합니다.
  3. 단지 특정시간만 대기하기를 원한다면, timer.Sleep()함수를 사용하면 됩니다.
    타이머가 유용한 기능 중 하나는 타이머가 완료되기 전에 취소할 수 있다는 것입니다.

실행하면 다음과 같습니다.

$ go run timers.go
Timer 1 expired
Timer 2 stopped

처음 타이머는 프로그램이 실행되고 2초후 만료되고, 타이머2는 만료되기 전에 중지시켰습니다.