Time包详解二-timer和ticket.html

timer 计时器

用于在指定的Duration类型时间后调用函数或计算表达式。

  • 如果只是想指定时间之后执行,使用time.Sleep()
  • 使用NewTimer(),可以返回的Timer类型在计时器到期之前,取消该计时器
  • 直到使用<-timer.C发送一个值,该计时器才会过期
timer1 := time.NewTimer(time.Second * 2)

ticker 断续器

按照指定的周期来调用函数或计算表达式。

  • 通常会使用go新开一个线程,否则会

使用时间控制停止ticker

	ticker := time.NewTicker(time.Millisecond * 500)
    go func() {
        for t := range ticker.C {
            fmt.Println("Tick at", t)
        }
    }()

	time.Sleep(time.Millisecond * 1500)   //阻塞
    ticker.Stop()     
    fmt.Println("Ticker stopped")

使用channel控制停止ticker

ticker := time.NewTicker(time.Millisecond * 500)
	c := make(chan int)
	go func() {
		i := 0
		for t := range ticker.C {
			fmt.Println("Tick at", t)
			i++
			if i == 3 {
				ticker.Stop()
				break
			}
		}
		c

不开新线程..

func main() {
	ticker := time.NewTicker(time.Millisecond * 500)

	i := 0
	for t := range ticker.C {       //无限循环,直到break
		fmt.Println("Tick at", t)
		i++
		if i == 3 {
			ticker.Stop()
			break
		}
	}

	fmt.Println("Ticker stopped")
}
posted @ 2013-04-16 16:44  zhepama  阅读(1565)  评论(0编辑  收藏  举报