首页 > 其他分享 >Golang sync.WaitGroup的用法

Golang sync.WaitGroup的用法

时间:2022-11-29 09:47:07浏览次数:59  
标签:wg WaitGroup sync Golang 计数器 Done Add

参考链接:https://studygolang.com/articles/12972

func main() {
    wg := sync.WaitGroup{}
    wg.Add(100)
    for i := 0; i < 100; i++ {
        go func(i int) {
            fmt.Println(i)
            wg.Done()
        }(i)
    }
    wg.Wait()
}

WaitGroup 对象内部有一个计数器,最初从0开始,它有三个方法:Add(), Done(), Wait() 用来控制计数器的数量。

1)Add(n) 把计数器设置为n 

2)Done() 每次把计数器-1 

3)wait() 会阻塞代码的运行,直到计数器地值减为0。

注意事项:

1)计数器不能为负值

2)WaitGroup对象不是一个引用类型,在通过函数传值的时候需要使用地址

 

标签:wg,WaitGroup,sync,Golang,计数器,Done,Add
From: https://www.cnblogs.com/wangjq19920210/p/16934471.html

相关文章

  • Node.js & file system & async await & forEach bug All In One
    Node.js&filesystem&asyncawait&forEachbugAllInOneawait&forEachbugconstfs=require("fs").promises;constpath=require("path");//constit......
  • SynchronousQueue的简单介绍
    SynchronousQueue有点特殊,具备生产者和消费者,但是生产者生产后会执行阻塞,当产生的数据有人取走的时候,生产者的阻塞状态会解除,再次生产再次阻塞,再次等待消费者解锁,多个线程......
  • async/await + Promise解决异步问题
    比如小程序的获取openid,首先getOpenID需要借助Promise实现,然后才可以使用async和await来同步(Vue同样如此)Page({/***生命周期函数--监听页面加载*/asynconL......
  • vue的.sync修饰符用法及原理详解
    vue.sync的历史vue.sync修饰符最初存在于vue1.0版本里,但是在2.0中被移除了。但是在2.0发布之后的实际应用中,vue官方发现.sync还是有其适用之处,比如在开发可复......
  • @PropSync 与 @VModel
    1.原始文档    2.分析 都可以用于修改组件中的props值,区别在于propSync要配合父组件.sync使用,VModel父组件使用时是v-model=""在vue2.x里,使用 v-model 等......
  • Javascript(笔记54) - promise - 4 async函数、await表达式、结合示例
    本套笔记,是基于尚硅谷的课程整理;​​Javascript(笔记51)-promise-1介绍与基本使用 ​​​​Javascript(笔记52)-promise-2API和方法​​​​Javascript(笔记53)......
  • 浅析 Kotlin 中的 synchronized
    首先,在Java中synchronized是一个关键字,在Kotlin中是一个函数。这个函数如下:/**Copyright2010-2018JetBrainss.r.o.andKotlinProgrammingLanguagecontributor......
  • ThreadLocal 和 synchornized 两者的区别
    packagecom.itheima.hello.runnable;importjava.util.Random;publicclassThreadDemo1implementsRunnable{   privateintcount=0......
  • golang_learn note_2022年11月26日
    D:\code_gitee\go_example\main.gopackagemainimport( "fmt")funcmain(){ //显示声明类型 constastring="hello" //隐式声明类型 constb="hello"......
  • golang的两把利器,协程和管道
    golang的协程相信大家都不陌生,在golang中的使用也很简单,只要加上一个关键字「go」即可,虽然说大家都知道,但是真的在实际使用中又遇到这样那样的问题,坑其实还是挺多的。而网上......