0Pricing
Go Academy · 강의

타이머와 티커

작업을 예약하고 반복하기

타이머와 티커은(는) CoddyKit의 무료 Go Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Go Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

Sleep으로 일시 중지하기

가장 간단한 일정 관리 도구는 time.Sleep(d)입니다. 이 함수는 현재 고루틴을 일정 시간 동안 일시 중지합니다.

package main

import (
    "fmt"
    "time"
)

func main() {
    fmt.Println("start")
    time.Sleep(10 * time.Millisecond)
    fmt.Println("done")
}

타이머란 무엇인가요

time.Timer는 지연 시간이 지난 후 한 번 실행됩니다. 만료되면 현재 시각을 해당 C 채널로 보냅니다.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.NewTimer(10 * time.Millisecond)
    <-t.C
    fmt.Println("timer fired")
}

time.After 간편 사용

time.After(d)는 지연 시간이 지난 후 값 하나를 전달하는 채널을 반환합니다. 변수를 사용하지 않고 한 번만 실행되는 타이머를 만들 수 있는 편리한 방법입니다.

package main

import (
    "fmt"
    "time"
)

func main() {
    <-time.After(10 * time.Millisecond)
    fmt.Println("elapsed")
}

타이머 중지하기

timer.Stop()은 타이머가 실행되기 전에 취소합니다. 제때 타이머를 중지했으면 true를 반환합니다.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.NewTimer(time.Hour)
    stopped := t.Stop()
    fmt.Println("stopped:", stopped)
}

틱커란 무엇인가요

time.Ticker는 일정한 간격으로 반복해서 실행되며, 실행될 때마다 해당 C 채널로 값을 보냅니다.

폴링이나 애니메이션 프레임처럼 주기적으로 수행할 작업에 사용하세요.

package main

import (
    "fmt"
    "time"
)

func main() {
    ticker := time.NewTicker(5 * time.Millisecond)
    <-ticker.C
    fmt.Println("tick")
    ticker.Stop()
}

틱 세기

틱커 채널을 반복해서 읽으며 각 간격에 작업을 수행한 다음, 충분한 횟수의 틱이 지나면 중지하세요.

package main

import (
    "fmt"
    "time"
)

func main() {
    ticker := time.NewTicker(5 * time.Millisecond)
    for i := 1; i <= 3; i++ {
        <-ticker.C
        fmt.Println("tick", i)
    }
    ticker.Stop()
}

틱커는 항상 중지하세요

타이머와 달리 틱커는 Stop()을 호출할 때까지 계속 실행됩니다. 중지하는 것을 잊으면 자원이 누수됩니다.

package main

import (
    "fmt"
    "time"
)

func main() {
    ticker := time.NewTicker(5 * time.Millisecond)
    defer ticker.Stop()
    <-ticker.C
    fmt.Println("one tick, will stop on return")
}

time.Tick 편의 기능

time.Tick(d)은 틱커 채널을 바로 반환합니다. 간단하지만 중지할 수 없으므로 프로그램의 전체 수명 동안 사용할 때만 쓰세요.

package main

import (
    "fmt"
    "time"
)

func main() {
    c := time.Tick(5 * time.Millisecond)
    <-c
    fmt.Println("ticked")
}

select로 시간 초과 처리

작업 채널과 time.After를 select에서 조합하여 시간 초과를 구현하세요.

package main

import (
    "fmt"
    "time"
)

func main() {
    done := make(chan bool)
    go func() { done <- true }()
    select {
    case <-done:
        fmt.Println("work finished")
    case <-time.After(time.Second):
        fmt.Println("timed out")
    }
}

AfterFunc으로 콜백 실행

time.AfterFunc(d, f)는 지연 시간이 지난 후 별도의 고루틴에서 함수 f를 실행하므로, 채널을 직접 읽지 않아도 됩니다.

package main

import (
    "fmt"
    "time"
)

func main() {
    done := make(chan bool)
    time.AfterFunc(10*time.Millisecond, func() {
        fmt.Println("callback ran")
        done <- true
    })
    <-done
}

타이머와 틱커 비교

반복 여부에 따라 선택하세요.

  • 타이머: 지연 시간이 지난 후 한 번 실행됩니다.
  • 틱커: 일정한 간격으로 계속 실행됩니다.
  • 작업이 끝나면 둘 다 중지하여 자원을 해제하세요.
package main

import (
    "fmt"
    "time"
)

func main() {
    <-time.After(5 * time.Millisecond)
    fmt.Println("one-shot complete")
}

빠른 확인

일정한 간격으로 반복해서 실행되는 유형은 무엇인가요?

복습: 타이머와 틱커

작업 일정을 관리하는 방법을 배웠습니다.

  • Sleep은 일시 중지하고, Timer와 time.After는 한 번 실행됩니다.
  • Ticker와 time.Tick은 반복해서 실행됩니다.
  • Stop()으로 정리하고, 시간 초과에는 select를 함께 사용하세요.
package main

import (
    "fmt"
    "time"
)

func main() {
    ticker := time.NewTicker(5 * time.Millisecond)
    defer ticker.Stop()
    for i := 0; i < 2; i++ {
        <-ticker.C
        fmt.Println("beat")
    }
}

자주 묻는 질문

“타이머와 티커” 강의는 무료인가요?

네 — “타이머와 티커” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Go Academy 강의 전체를 잠금 해제할 수 있습니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“타이머와 티커”에서 뭘 배우나요?

작업을 예약하고 반복하기 브라우저에서 직접 실행하는 실습 코드로 Go Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Go Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Go Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“타이머와 티커” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Go Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Go Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 시간과 기간
  2. 서식 지정과 파싱
  3. 타이머와 티커
  4. 시간대
← Go Academy(으)로 돌아가기