当前位置:网站首页>GO同步等待组

GO同步等待组

2022-06-24 23:12:00 南瓜头777

Go语言中除了可以使用通道(channel)和互斥锁进行两个并发程序间的同步外,还可以使用等待组进行多个任务的同步,等待组可以保证在并发环境中完成指定数量的任务

在 sync.WaitGroup(等待组)类型中,每个 sync.WaitGroup 值在内部维护着一个计数,此计数的初始默认值为零。

package main

import (
	"fmt"
	"sync"
	"time"
)

var wg sync.WaitGroup //定义一个同步等待的组
func task(i int) {
    
	fmt.Println("task...", i)
	//耗时操作任务,网络请求,读取文件
	time.Sleep(time.Second)
	wg.Done() //减去一个计数
}
func main() {
    
	for i := 0; i < 10; i++ {
    
		wg.Add(1) //添加一个计数
		go task(i)
	}
	wg.Wait() //阻塞直到所有任务完成
	fmt.Println("over")
}
原网站

版权声明
本文为[南瓜头777]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_44840774/article/details/125347590