sync.WaitGroup 等待组
*在 sync.WaitGroup(等待组)类型中,每个 sync.WaitGroup 值在内部维护着一个计数,此计数的初始默认值为零* ## 方法 | 方法名 | 功能 | | ------- | ----- | | (wg * WaitGroup) Add(delta int) | 等待组的计数器 +delta | | (wg * WaitGroup) Done() | 等待组的计数器 -1 | | (wg * WaitGroup) Wait() | 当等待组计数器不等于 0 时阻塞直到变 0 | ## 使用示例 创建wg计数器: ```go var wg sync.WaitGroup ``` 计数器加1: ```go wg.Add(1) ``` 计数器减1: ```go wg.Done() ``` 计数器等待: ```go wg.Wait() ``` ## 完整示例 ```go package main import ( "fmt" "sync" ) func main() { // 创建计数器 var wg sync.WaitGroup // 并发任务 for i := 0; i < 10; i++ { // 计数器+1 wg.Add(1) go func(i int) { // goroutine结束后计数器-1 defer wg.Done() fmt.Println(i) }(i) } // 计数器等待 wg.Wait() fmt.Println("END") } ``` 当wg计数大于0时,wg.Wait()会使程序阻塞,直到计数为0时,才继续执行后面的代码。
创建时间:2023-09-13
|
最后修改:2023-12-27
|
©允许规范转载
酷酷番茄
首页
文章
友链