小兔网

本篇文章小编将带大家一起学习一下go语言中的并发控制中的WaitGroup计数信号量 ,并附上用例代码,具有一定的参考价值,感兴趣的朋友快来学习一下吧!

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计数信号量的知识。速戳>>知识兔学习精品课!