我有一个调用方法的 goroutine,并在通道上传递返回值:
ch := make(chan int, 100) go func(){ for { ch <- do_stuff() } }()
我如何停止这样的 goroutine?
通常,您向 goroutine 传递一个(可能是单独的)信号通道。当您希望 goroutine 停止时,该信号通道用于将值推入。goroutine 定期轮询该通道。一旦检测到信号,它就会退出。
quit := make(chan bool) go func() { for { select { case <- quit: return default: // Do other stuff } } }() // Do stuff // Quit goroutine quit <- true