一个信号量与定时器的例子(Golang)
发布时间:2020-12-16 18:45:47 所属栏目:大数据 来源:网络整理
导读:程序可用来定时执行一些任务,并通过信号量处理,在被强制中断时,也能做相应警告及清理处理. package main//信号量与定时器//author: Xiong Chuan Liang//date: 2015-2-25import "fmt"import "os"import "os/signal"import "time"func main() {sigs := make
程序可用来定时执行一些任务,并通过信号量处理,在被强制中断时,也能做相应警告及清理处理. package main //信号量与定时器 //author: Xiong Chuan Liang //date: 2015-2-25 import "fmt" import "os" import "os/signal" import "time" func main() { sigs := make(chan os.Signal,1) done := make(chan bool,1) signal.Notify(sigs,os.Interrupt,os.Kill) go func() { sig := <-sigs switch sig { case os.Interrupt: fmt.Println("signal: Interrupt") case os.Kill: fmt.Println("signal: Kill") default: fmt.Println("signal: Others") } done <- true }() fmt.Println("awaiting signal") //main().... go JobTicker(done) <-done close(done) //app.Exit() fmt.Println("exiting") } func JobTicker(done <-chan bool) { ticker := time.NewTicker(time.Second) defer ticker.Stop() for { select { case <-done: return case <-ticker.C: fmt.Println("job......") } } } 如果按 ctrl-C 则结果如下: awaiting signal job...... job...... signal: Interrupt interrupt exiting
Go by Example: Signals: https://gobyexample.com/signals MAIL: xcl_168@aliyun.com Blog: http://blog.csdn.net/xcl168 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |