zoukankan      html  css  js  c++  java
  • [Go] 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("
    goroutine结束")
    }
    

      

  • 相关阅读:
    网络协议 19
    网络协议 18
    网络协议 17
    网络协议 16
    网络协议 15
    .NET基础知识(01)-值类型与引用类型
    .NET基础知识(02)-拆箱与装箱
    网络协议 14
    网络协议 13
    网络协议 12
  • 原文地址:https://www.cnblogs.com/taoshihan/p/10347185.html
Copyright © 2011-2022 走看看