[Go] Go的WaitGroup计数信号量
程序员文章站
2022-05-27 22:29:42
WaitGroup是一个计数信号量,可以用来记录并维护运行的goroutine,如果WaitGroup的值大于0,Wait方法就会阻塞 调用Done方法来减少WaitGroup的值,并最终释放main函数 ......
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结束")
}
上一篇: JS基础学习之深入数组的sort方法
下一篇: How 优根