本篇文章小编将带大家一起学习一下go语言中的并发控制中的waitgroup计数信号量 ,并附上用例代码,具有一定的参考价值,感兴趣的朋友快来学习一下吧!
WaitGroup是一个计数信号量,可以用来记录并维护运行的goroutine,如果WaitGroup的值大于0,Wait方法就会阻塞
调用Done方法来减少WaitGroup的值,并最终释放main函数
package main
import(
"fmt"
"runtime"
"sync"
)
func main(){
//只分配一个逻辑处理器给调度器使用
runtime.GOMAXPROCS(1)
//wg用来使main goroutine等待子goroutine结束
var wg sync.WaitGroup
//等待两个子goroutine结束
wg.Add(2)
fmt.Println("开启goroutine")
go func(){
defer wg.Done()
//循环显示三遍字母表
for count:=0;count<3;count++{
//循环显示字母表
for char:='a';char<'a'+26;char++{
fmt.Printf("%c ",char)
}
}
}()
go func(){
defer wg.Done()
//循环显示三遍字母表
for count:=0;count<3;count++{
//循环显示字母表
for char:='A';char<'A'+26;char++{
fmt.Printf("%c ",char)
}
}
}()
//main goroutine等待子goroutine结束
wg.Wait()
fmt.Println("\ngoroutine结束")
}想了解更多go语言教程,快去关注PHP中文网的go视频教程吧!










