1. 程式人生 > >golang 中timer,ticker 的使用

golang 中timer,ticker 的使用

() lang 一個 con logs col func ssa 接收消息

寫一個程序, 5s, 10s後能定時執行一個任務,同時能不停的處理來的消息。

-------------------------------------------------------------------------------------------------

package main

import (
	"fmt"
	"time"
)

func main() {

	input := make(chan interface{})

	//producer - produce the messages
	go func() {
		for i := 0; i < 5; i++ {
			input <- i
		}
		input <- "hello, world"
	}()

	t1 := time.NewTimer(time.Second * 5)
	t2 := time.NewTimer(time.Second * 10)

	for {
		select {
		//consumer - consume the messages
		case msg := <-input:
			fmt.Println(msg)

		case <-t1.C:
			println("5s timer")
			t1.Reset(time.Second * 5)

		case <-t2.C:
			println("10s timer")
			t2.Reset(time.Second * 10)
		}
	}
}

  寫出上面這段程序的目的是從 input channel 持續接收消息加以處理,同時希望每過5秒鐘和每過10秒鐘就分別執行一個定時任務

golang 中timer,ticker 的使用