我怎样才能杀死一个正在阻塞的 goroutine。一个想法是从主机函数返回将是一个解决方案,但我不确定这是否会杀死 goroutine。
func myFunc() int {
c := make(<-chan int)
go func(){
for i := range c {
// do stuff
}
}()
return 0 // does this kills the inner goroutine?
}
有更好的解决方案吗?例如,如果像这样的东西可以工作就好了,但是由于它的阻塞而不能:
func myFunc() int {
c := make(<-chan int)
closeChan := make(chan int)
go func() {
select {
case close := <-closeChan:
return 0
default:
for i := range c {
// do stuff
}
}
}()
closeChan<-0
// other stuff
}
温温酱
相关分类