[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语言教程,快去关注教程集的go视频教程吧!
以上就是[Go学习] 并发控制之WaitGroup计数信号量的详细内容,更多请关注教程集其它相关文章!
您可能感兴趣的文章:
[Go学习] 并发控制之WaitGroup计数信号量
golang WaitGroup源码解析
Go WaitGroup实现原理
sync.WaitGroup实现原理和源码解析
Golang并发利用sync.WaitGroup实现协程同步
Golang WaitGroup源码分析
Golang sync.WaitGroup源码详细分析
从零学习 Go 语言(24):理解 Go 语言中的 goroutine
字节跳动的 Go 语言面试会问哪些问题?
Golang 并发编程与同步原语