这篇文章主要介绍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学习并发控制之WaitGroup计数信号量的案例的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!