Go如何杀死goroutine?

jessek · · 16643 次点击
gihnius
http://gihnius.net/
唉,你就不能仔细看看楼主大意思么? //执行真正的处理,这里 http.Get() go func(tm int) { i := 0 for i < tm { b := false select { case <-quit: b = true default: fmt.Println(ch, "is running...") i++ // time.Sleep(1 * time.Second) http.Get("wtf_url") } if b { break } } flg <- true }(ch) 本来想 10s 后结束那个 goroutime, 但 tmd http.Get 就跑了一分钟. 你觉得你这是办法么?
#11
更多评论
polaris
社区,需要你我一同完善!
可以让一个 goroutine 监听一个 channel,另外一个 goroutine 给这个channel发送一个退出信号,收到这个信号的goroutine退出。
#1
gihnius
http://gihnius.net/
&gt; 在函数里开一个 goroutine 并不会因为函数的结束而退出 这个是肯定的啦。 硬要 timeout, 你要么放弃那个函数的结果,要么让它自生自灭. <a href="/user/polaris" title="@polaris">@polaris</a> 楼主是想停掉 **一个** 正在工作的 goroutime, 怎么能又让它工作又让它监听 channel ?
#2