最近遇到一个难题,求助一下各位大神。 如下面部分代码所示。 computedata 内部 调用的dosomething函数是一个很耗时的函数,通过复杂的计算返回一个结果,用于其他函数计算。但是dosomething 函数在一秒之内,仍然没有返回结果。那么就直接超时,timeout掉。 但是目前遇到的困难是 即使我们这个computedata函数杀死,dosomething函数让着后台运行,该函数会修改一些全局函数,下次调用是,会影响下次的计算结果,因此必须彻底杀死,如何才能杀死它呢?求助高手? ```go func main() { computedata() for{ } } func computedata() { var c = make(chan int,1) time := time.Now().Add(time.Second*1) ctx, cancel := context.WithDeadline(context.Background(),time) defer cancel() go dosomething(c) select { case <-ctx.Done(): fmt.Println("time out.") return case data :=<-c: fmt.Println(data) return } } ```
有疑问加站长微信联系(非本文作者)
