在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
https://stackoverflow.com/questions/37997608/kill-a-method-in-an-infinite-loop-golang I am working with a piece of code that has an intentional infinite loop, I can't modify that code. I want to write some tests on that method (e.g. make sure it triggers actions at the right times) but I don't want to orphan a bunch of go routines. So I am trying to find a way that I can kill/interrupt that goroutine.
https://forum.golangbridge.org/t/how-to-kill-go-routine/6581 package main import ( "time" "fmt" "runtime" ) func worker(ch1 <-chan bool, ch2 <-chan int) { for { select { case <-ch2: // How to kill the go routine ? go func() { for { fmt.Println("Hıa") time.Sleep(0x2 * time.Second) } }() case <-ch1: goto Finish } } Finish: fmt.Println("Closing go routine!") runtime.Goexit() return } func main() { ch1 := make(chan bool) ch2 := make(chan int) go worker(ch1, ch2) for i := 0x0; i <= 0x0F; i++ { if i == 0x5 { ch2 <- 1 } else if i == 0xA { ch1 <- true } else { fmt.Println(i) time.Sleep(0x1 * time.Second) } } }
http://dahernan.github.io/2015/02/04/context-and-cancellation-of-goroutines/
|
请发表评论