golang 中goroutine退出

Dongzdong · · 1636 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

错误点

原先自以为在自定义函数里面开辟一个新的协程,函数退出,开辟的协程也会强制退出,直到跟公司项目,看大佬写的调度才发现只有一种情况正在运行的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()

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:Dongzdong

查看原文:golang 中goroutine退出

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1636 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传