Golang控制goroutine的启动与关闭

在用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 {
	}

}