waitgroup是一个计数信号量,可以用来记录并维护运行的goroutine,如果waitgroup的值大于0,wait方法就会阻塞
调用done方法来减少waitgroup的值,并最终释放main函数
package mainimport( "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计数信号量的详细内容。
