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

      

  • 相关阅读:
    君の名は~ 观后感
    dp1,明天补题解
    【bzoj1222】[HNOI2001]产品加工
    Daily~Miracles
    luogu 1273有线电视网
    luogu 1373
    codeforces 721C
    codeforces 706E
    The~Best~Chanteur~宇多田ヒカル
    codeforces706D
  • 原文地址:https://www.cnblogs.com/taoshihan/p/10347185.html
Copyright © 2011-2022 走看看