《Go语言实战》学习笔记——WaitGroup和defer

代码实战Go语言之channel代码实战-goroutine模拟双人网球_WonderChaos的博客-CSDN博客中,有一些语句没太明白,这篇详细学习一下:

var wg sync.WaitGroup
wg.Add(2)
wg.Wait()
defer wg.Done()

第6章 并发

6.2 goroutine

WaitGroup是一个计数信号量,可以用来记录并维护运行的goroutine。如果 WaitGroup
的值大于 0,Wait 方法就会阻塞。

关键字 defer 会修改函数调用时机,在正在执行的函数返回时才真正调用 defer 声明的函
数。


也就是说:
1、定义信号量wg(WaitGroup)并设置其数量为待运行goroutine的个数
2、WaitGroup值大于0,Wait方法就会阻塞,因此让main函数通过wg.Wait()等待运行的goroutine全部结束。
3、在每个goroutine中使用defer指定该goroutine使用的函数退出时调用wg.Done()减少信号量个数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值