美文网首页
使用waitgroup同步goroutine

使用waitgroup同步goroutine

作者: 杨涛_440e | 来源:发表于2019-11-06 17:30 被阅读0次
package main

import (
    "fmt"
    "sync"
)

func main() {
    wg := sync.WaitGroup{}

    //通过这里可以看出for循环的优先级高于wg.wait()执行的优先级
    for i:=0;i<8;i++{
        //在这里添加一个协成
        wg.Add(1)  //如果执行两个goroutine这里应该为wg.Add(2)
        go func(i int) {
            //这里协成操作完成
            defer wg.Done() //每次执行完成后进入下一次循环 继续刚才的操作直到循环结束后wg中的waitgoup被清零
                            // 然后跳出循环执行wg.Wait() 之后执行main函数然后结束
            fmt.Printf("the %d goroutine\n",i)
        }(i)
    }

    //等待知道计数为零
    wg.Wait()
    fmt.Println("main exit ....")
}


//执行结果如下

the 7 goroutine
the 3 goroutine
the 4 goroutine
the 5 goroutine
the 6 goroutine
the 0 goroutine
the 1 goroutine
the 2 goroutine
main exit ....


相关文章

网友评论

      本文标题:使用waitgroup同步goroutine

      本文链接:https://www.haomeiwen.com/subject/ndxpbctx.html