欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

[Go] Go的WaitGroup计数信号量

程序员文章站 2022-05-27 22:29:42
WaitGroup是一个计数信号量,可以用来记录并维护运行的goroutine,如果WaitGroup的值大于0,Wait方法就会阻塞 调用Done方法来减少WaitGroup的值,并最终释放main函数 ......

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结束")
}