zoukankan      html  css  js  c++  java
  • WaitGroup

    #########################

    控制并发有两种经典的方式,一种是WaitGroup,另外一种就是Context,今天我就谈谈Context。

    什么是WaitGroup

    WaitGroup以前我们在并发的时候介绍过,它是一种控制并发的方式,它的这种方式是控制多个goroutine同时完成。

    func main() {
        var wg sync.WaitGroup
    
        wg.Add(2)
        go func() {
            time.Sleep(2*time.Second)
            fmt.Println("1号完成")
            wg.Done()
        }()
        go func() {
            time.Sleep(2*time.Second)
            fmt.Println("2号完成")
            wg.Done()
        }()
        wg.Wait()
        fmt.Println("好了,大家都干完了,放工")
    }

    一个很简单的例子,一定要例子中的2个goroutine同时做完,才算是完成,先做好的就要等着其他未完成的,所有的goroutine要都全部完成才可以。

    这是一种控制并发的方式,这种尤其适用于,好多个goroutine协同做一件事情的时候,因为每个goroutine做的都是这件事情的一部分,只有全部的goroutine都完成,这件事情才算是完成,这是等待的方式。

    #############################

    igoodful@qq.com
  • 相关阅读:
    Samba
    百度贴吧
    baidu.com关键字查询
    vim 删除每行开头结尾空格
    read line(逐行读取)
    pycharm 激活
    rsync 启动脚本
    收藏
    elk
    sql is null
  • 原文地址:https://www.cnblogs.com/igoodful/p/14767516.html
Copyright © 2011-2022 走看看