为了账号安全,请及时绑定邮箱和手机立即绑定

使用多个 goroutine 的好处

使用多个 goroutine 的好处

Go
慕尼黑5688855 2022-05-23 16:06:47
我见过等待一组 goroutine 完成的代码:var wg sync.WaitGroupwg.Add(2)go func() {    // Do work.    wg.Done()}()go func() {    // Do some other work.    wg.Done()}()wg.Wait()这样做的主要好处是什么,而不是让我们说:var wg sync.WaitGroupwg.Add(1)go func() {    // Do work.    // Do some more work here instead.    wg.Done()}()wg.Wait()它更快吗?
查看完整描述

1 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

有些事情要清楚:你的两个例子都使用一个sync.WaitGroup,主要区别是工作的“分布”到goroutines

在您的第一个示例中,您有 2 个并发 goroutine 执行 2 个不同的工作(任务),而在第二个示例中,您有 1 个单个 goroutine 依次执行这两个任务,一个接一个。

主要好处可能是2 个 goroutine 可以安排在 2 个 OS 线程中运行,这可能会利用 2 个独立的 CPU 内核,因此它可以更早/更快地完成。它是否提前完成以及完成多少取决于实际任务。

这两个任务甚至可能相互依赖,所以如果你把它们放在一个 goroutine 上,它们可能永远不会完成。


查看完整回答
反对 回复 2022-05-23
  • 1 回答
  • 0 关注
  • 123 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信