请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

最后异步执行的问题

这节课我看到了最后一块要异步执行:

	go func() {
		models.NewDocument().ReleaseContent(bookId, c.BaseUrl())
		models.ElasticBuildIndex(bookId)
	}()

	c.JsonResult(0, "已发布")

我的问题是,为什么不加sync.WaitGroup锁住这些协程?让他们执行完毕之后再去执行c.JsonResult。不担心他们还没来得级执行就先执行了c.JsonResult(0, “已发布”)?然后这个主协程执行完毕,这些子协程没来得及就挂掉了

正在回答

2回答

https://blog.csdn.net/scylhy/article/details/89303653

0 回复 有任何疑惑可以回复我~
自由编程 2020-03-23 17:48:51

考虑到用户界面可能等待时间过长,就把这个操作做成了后台操作,确实没做过多考虑。

0 回复 有任何疑惑可以回复我~
  • 所以这算是一个隐藏的bug???
    回复 有任何疑惑可以回复我~ 2020-03-23 18:13:06
  • 其实,除非你的服务退出,主协程一直都在,一般不会说主协程退出造成子任务失败。我觉得这里加WaitGroup意义不大。
    不过,如果这些子任务自身执行出错,这一点确实没有严格去处理。在实际使用中,其实子任务出错的概率也不大,除非是程序自身bug。
    回复 有任何疑惑可以回复我~ 2020-03-24 05:42:31

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信