返回顶部
首页 > 资讯 > 精选 >Go WaitGroup的使用方式及实例详解
  • 762
分享到

Go WaitGroup的使用方式及实例详解

Go语言 2023-10-12 11:10:24 762人浏览 八月长安
摘要

WaitGroup 是 Go 语言的一个并发控制机制,它可以用于等待一组 goroutine 的结束。WaitGroup 提供了三个

WaitGroup 是 Go 语言的一个并发控制机制,它可以用于等待一组 goroutine 的结束。WaitGroup 提供了三个方法:Add、Done 和 Wait。
1. Add 方法:用于设置 WaitGroup 中等待的 goroutine 的数量。Add 方法的参数是一个整数,表示需要等待的 goroutine 的数量。通常在启动每个 goroutine 之前都会调用 Add 方法来增加要等待的 goroutine 的数量。
2. Done 方法:用于通知 WaitGroup 一个 goroutine 的结束。在 goroutine 的最后调用 Done 方法来减少 WaitGroup 中等待的 goroutine 的数量。
3. Wait 方法:用于阻塞当前 goroutine,直到 WaitGroup 中等待的 goroutine 的数量变为 0。一般在主 goroutine 里调用 Wait 方法,等待所有子 goroutine 结束后再继续执行。
下面是一个使用 WaitGroup 的示例代码:
```go
package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
for i := 0; i < 5; i++ {
wg.Add(1)
go func(i int) {
defer wg.Done()
fmt.Printf("goroutine %d\n", i)
}(i)
}
wg.Wait()
fmt.Println("All goroutines finished")
}
```
在上面的例子中,首先创建了一个 WaitGroup 对象 wg。然后使用一个 for 循环启动了 5 个 goroutine,并在每个 goroutine 中调用了 wg.Add(1) 来增加 WaitGroup 中等待的 goroutine 的数量。在每个 goroutine 的最后调用了 wg.Done() 来通知 WaitGroup 一个 goroutine 的结束。最后在主 goroutine 中调用了 wg.Wait() 来等待所有的子 goroutine 结束。
上面的代码运行时,可能会输出类似如下的结果:
```
goroutine 4
goroutine 0
goroutine 3
goroutine 2
goroutine 1
All goroutines finished
```
可以看到,不同的 goroutine 的输出顺序是随机的,这是因为它们是并发执行的。
总结:WaitGroup 是 Go 语言中一个用于等待一组 goroutine 结束的机制。通过调用 Add、Done 和 Wait 方法,可以实现对一组 goroutine 的并发控制。

--结束END--

本文标题: Go WaitGroup的使用方式及实例详解

本文链接: https://lsjlt.com/news/429374.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作