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數目
相關文章
相關標籤/搜索