在用walk写一个窗口程序,当需要执行其它任务的时候,你要用一个新的线程去做,所以想到任务的停止和启动。在go中,很容易可以做到这些,因为go是通过管道通迅的。
package main import ( "fmt" "time" ) func p() { fmt.Println("test") time.Sleep(time.Second * 3) } func worker(ch chan int) { for { select { case <-ch: return //收到信号就退出线程 default: p() } } } func main() { ch := make(chan int) go worker(ch) time.Sleep(time.Second * 10) ch <- 1 //发送退出线程的命令 fmt.Println("finish.") for { } }