美文网首页golang 编程笔记
【golang】函数结束后,函数中的goroutine退出机制

【golang】函数结束后,函数中的goroutine退出机制

作者: dongzd | 来源:发表于2020-03-12 14:14 被阅读0次

    错误点

    原先自以为在自定义函数里面开辟一个新的协程,函数退出,开辟的协程也会强制退出,直到跟公司项目,看大佬写的调度才发现只有一种情况正在运行的goroutine会因为其他goroutine的结束被终止,就是main函数的退出或程序停止执行

    在项目中要想,协程执行超出时间,放弃协程的结果可以使用:

    ctx, cancel := context.WithCancel(context.Background())
    time.AfterFunc(module.GetTimeoutDuration(), func() {
        cancel()
    })
    go func() {
        result, err = module.ExecuteRule(mc, ruleRaw)
    
        result = dirtyRestoreRuleParam(mc, result, ruleRaw)
        if err != nil {
            result.Error = err.Error()
        }
        cancel()
    }()
    <-ctx.Done()
    

    相关文章

      网友评论

        本文标题:【golang】函数结束后,函数中的goroutine退出机制

        本文链接:https://www.haomeiwen.com/subject/zpeujhtx.html