sync

import sync

WaitGrou

WaitGroup 用于等待一组 goroutine 结束。它有三个方法:

func (wg *WaitGroup) Add(delta int)
func (wg *WaitGroup) Done()
func (wg *WaitGroup) Wait()
  • Add 用来添加 goroutine 的个数。
  • Done 执行一次数量减 1。
  • Wait 用来等待结束:
package main

import "fmt"
import "sync"
import "time"

func main(){
    var wg sync.WaithGroup
    for i :=0 ; i < 5 ; i ++ {
        wg.Add(1)
        go func(i int){
            defer wg.Done()
            time.Sleep(time.Second * time.Duration(i))
            fmt.Printf("goroute %d end \n", i)
        }(i)
    }

    wg.Wait()
    fmt.Println(all end)
}

go run

goroute 0 end
goroute 1 end
goroute 2 end
goroute 3 end
goroute 4 end
all end

参考

https://golang.org/pkg/sync/ https://books.studygolang.com/The-Golang-Standard-Library-by-Example/chapter16/16.01.html

Copyright © 温玉 2021 | 浙ICP备2020032454号 all right reserved,powered by Gitbook该文件修订时间: 2023-07-24 22:40:53

results matching ""

    No results matching ""