waitgroup的使用

来源:11-5 传统同步机制

qq_白澤_0

2020-08-16

老师,我们如果在多任务情况,优先使用waitgroup吗?之前的几节还有讲到自己写done的部分,但是这里归类到了传统同步机制,如果多任务情况,我们是优先使用waitgroup还是自己写channel?

写回答

2回答

ccmouse

2020-08-19

这个问题很好。

我们在任务数量确定的情况下考虑自己写channel。举个例子,用户要购买一个商品,我需要:

  1. 查询库存

  2. 查询余额

  3. 确定购买人资格,比如年龄等

这三件事可以同时进行,但是数量固定。这里数量固定是指不随用户的输入变化,不是说业务上固定。就适合自己写channel,比如:

stockVerified := <- stockCheckCh

fundVerified := <-fundCheckCh

identityVerified := <- identityCheckCh

if stockVerified && fundVerified && identityVerified {

   // 购买逻辑

}


使用waitgroup的话,适用于任务数量不确定的情况。比如我要根据资源情况把一个并行任务分配给n个worker,那就需要用waitgroup来等待它们全部做完。

2
1
qq_白澤_0
非常感谢老师的回答,一下比较明确了
2020-08-19
共1条回复

xfcy_晓风残月

2020-11-22

感谢!有同样的感受~谢谢ccmouse大神的解答!

0
0

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程