1. 首页
  2. 编程语言
  3. 其他
  4. Golang中的sync包的WaitGroup操作

Golang中的sync包的WaitGroup操作

上传者: 2022-07-09 05:15:26上传 PDF文件 83.24 KB 热度 24次

陷阱在WaitGroup的3个函数的调用顺序上。先回顾下3个函数的功能:Add:给计数器增加delta,比如启动1个协程就增加1。考一考下面的程序是创建了协程father,然后father协程创建了10个子协程,main函数等待所有协程结束后退出,看看下面代码有没有什么问题?如果没有看下面的运行结果:main函数在子协程结束前就开始结束了。正确的做法Add函数一定要在Wait函数执行前执行,这在Add函数的文档中就提示了: Note that calls with a positive delta that occur when the counter is zero must happen before a Wait.。在协程情况下,我们不能预知协程中代码执行的时间是否早于Wait函数的执行时间,但是,我们可以在分配协程前就执行Add函数,然后再执行Wait函数,以此确保。

下载地址
用户评论