谈谈Golang的同步等待组

本文介绍了Golang中的同步等待组,用于管理多个子协程的执行。通过WaitGroup,可以在所有子协程完成后结束主协程。文章通过示例展示了Add、Done方法的使用,并提醒了在使用中需要注意的事项,如计数器不能为负和WaitGroup需按指针传递。
摘要由CSDN通过智能技术生成

作者:ReganYue

来源:恒生LIGHT云社区

大家好,这里是努力变得优秀的R君,这次我们继续来进行Golang系列《让我们一起Golang》,区块链系列内容明年会继续更新,共识算法已经基本完毕,如果不出意外,元旦那个星期就是介绍如何构建公链项目了,本次我们来了解Golang的同步等待组,这也是一个比较容易理解的知识点,我们来看一看吧!

我们现在开十条子协程,然后当十条子协程全部结束后,主协程立马结束。动动你的小脑袋,想一想应该怎么做?如果是一条子协程的话就很容易实现,当这条子协程结束时让主协程结束就行了。但是我们现在是10条,让任何一条子协程发布让主协程结束的命令都不行,因为你无法确定哪一条子协程是最后结束的。所以我们现在用上了等待组。

等待组是什么原理呢?创造一个子协程就登记一下,然后子协程干完活就将其除名,名单除干净了就结束主协程。

我们来看看等待组的有关示例:

func main() {
    fmt.Println(time.Now())
    var wg sync.WaitGroup
    //起一个协程就加一
    wg.Add(1)
    go func() {
        for i:=0;i<5;i++{
            fmt.Println(i)
            //相当于阻塞一秒,读到时间
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值