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

Go语言sync库和WaitGroup的使用

标签:
Go


// code_041_sync_WaitGroup project main.go

package main

import (

    "fmt"

    "sync"

)

func main() {

    fmt.Println("Hello World!")

    var wg sync.WaitGroup

    wg.Add(2)

    go func() {

        defer wg.Done()

        for i := 0; i < 10000; i++ {

            fmt.Printf("Hello,Go.This is %d\n", i)

        }

    }()

    go func() {

        defer wg.Done()

        for i := 0; i < 10000; i++ {

            fmt.Printf("Hello, world.This is %d\n", i)

        }

    }()

    wg.Wait()

}

sync.WaitGroup是一个计数的信号量,使main函数所在主线程等待两个goroutine执行完成后再结束,否则两个goroutine还在运行时,主线程已经结束。

sync.WaitGroup使用非常简单,使用Add方法设设置计数器为2,每一个goroutine的函数执行完后,调用Done方法减1。Wait方法表示如果计数器大于0,就会阻塞,main函数会一直等待2个goroutine完成再结束。

©著作权归作者所有:来自51CTO博客作者ck_god的原创作品,如需转载,请注明出处,否则将追究法律责任

GoWaitGroupsyncGolang

0

分享

收藏

上一篇:goroutine/Gosche... 下一篇:Go语言中channel的基础知...

 ck_god

185篇文章,9W+人气,0粉丝

学无止境,好好学习,天天向上

Ctrl+Enter 发布发布取消

推荐专栏

基于Python的DevOps实战

自动化运维开发新概念

共20章 | 抚琴煮酒

¥51.00 309人订阅

订   阅

微服务技术架构和大数据治理实战

大数据时代的微服务之路

共18章 | 纯洁微笑

¥51.00 614人订阅

订   阅

猜你喜欢

Flask中常见的数据库定义和数据库迁移OS.ENVIRON()详解Go语言11-日志系统客户端相关组件Go语言9-socket和redisGo语言8-goroutine和channelGo语言开发(十一)、Go语言常用标准库一Go语言2-基本数据类型和操作符GO-ruantime

0分享 ck_god


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消