我有一个运行几分钟的函数,我正在尝试找到一种方法来使用通道停止它。
我想我不能像在下面的代码中那样做,因为我认为它select只会stop在default完成后处理这种情况。
package main
import (
"fmt"
"time"
)
func main() {
stop := make(chan int)
go func() {
for {
select {
case <-stop:
fmt.Println("return")
return
default:
fmt.Println("block")
time.Sleep(5 * time.Second) // simulate a long running function
fmt.Println("unblock")
}
}
}()
time.Sleep(1 * time.Second)
stop <- 1
}
繁华开满天机
富国沪深
相关分类