本篇文章小编将带大家一起学习一下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视频教程吧!
Atas ialah kandungan terperinci [Go学习] 并发控制之WaitGroup计数信号量. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!