GO语言并发之waitgroup

var waitgroup sync.WaitGroup

func main() {
   for index := 0; index < 3; index++ {
      waitgroup.Add(1)
      go run(index)  //goroutine
   }
   waitgroup.Wait() //等待全部goroutine完成
   fmt.Println("main end!")
}

func run(index int) {
   time.Sleep(time.Duration(index) * time.Second)
   fmt.Printf( "%d is going!\n", index)
   waitgroup.Done()
}

返回结果

0 is going!
1 is going!
2 is going!
main end!

使用注意事项

  1. WaitGroup不能保证多个 goroutine 执行次序
  2. WaitGroup没法指定固定的goroutine数目
相关文章
相关标签/搜索