我想知道如何杀死/停止goroutines。所有示例均基于频道和select,这似乎仅在goroutine包含可在其间侦听频道的重复任务时才起作用。有没有办法在下面的goroutine返回之前停止它?
package main
import (
"time"
)
func main() {
stop := make(chan string, 1)
go func() {
time.Sleep(10 * time.Second)
stop <- "stop"
return
}()
<- stop
}
答案 0 :(得分:3)
是否可以在返回以下goroutine之前停止它?
没有(除了调用os.Exit终止整个程序外)。
Goroutines是独立的,不能从外部控制。