
目前的需求是这样的
func main() { errg := new(errgroup.Group) errg.Go(func() error { return test1() }) errg.Go(func() error { return test2() }) if err := errg.Wait(); err != nil { log.Error(err) } } func test1() error { return nil } func test2() error { return errors.New("test2 err") } 我如何控制 go 中的协程 有一个错误,其他 go 协程就不会执行? 同时大家如何控制超时的那? 希望能给个范例
1 anyxchachapoly 2021 年 9 月 1 日 1. 其他 goroutine 就『不会执行』,还是『停止执行』,这是两件事,如果是前者,那就是 sequential 设计,如果后者,还得考量你 gorotuine 中的具体业务,部分情况可以简单使用 context ( chan )检测。 2. 超时如果不会自己设计,那就走 context 方式,如果要采用 timer 务必检查是否 drain 掉 C |