Skip to content

Instantly share code, notes, and snippets.

@tsub
Created September 30, 2017 12:01
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tsub/d227643dd580e325de7cd1b2e4038e8d to your computer and use it in GitHub Desktop.
Save tsub/d227643dd580e325de7cd1b2e4038e8d to your computer and use it in GitHub Desktop.
demo for using time.Ticker and os.Signal
package main
import (
"fmt"
"os"
"os/signal"
"syscall"
"time"
)
func main() {
sigs := make(chan os.Signal, 1)
done := make(chan bool, 1)
// SIGINT と SIGTERM を受け取ったら sigs に送る
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
go func() {
// シグナルを受け取るまで待機
sig := <-sigs
fmt.Println("Signal cached:", sig)
// 終了のメッセージを送る
done <- true
}()
ticker := time.NewTicker(1 * time.Second)
defer ticker.Stop()
go func() {
for t := range ticker.C {
fmt.Println("Tick at", t)
}
}()
fmt.Println("awaiting signal")
// 終了のメッセージを受け取るまで待機
<-done
fmt.Println("exiting")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment