1. 程式人生 > >Go語言sync庫和WaitGroup的使用

Go語言sync庫和WaitGroup的使用

%d 調用 如果 運行時 main函數 fmt package 信號量 計數

// code_041_sync_WaitGroup project main.go package main import ( "fmt" "sync" ) func main() { fmt.Println("Hello World!") var wg sync.WaitGroup wg.Add(2) go func() { defer wg.Done() for i := 0; i < 10000; i++ { fmt.Printf("Hello,Go.This is %d\n", i) } }() go func() { defer wg.Done() for i := 0; i < 10000; i++ { fmt.Printf("Hello, world.This is %d\n", i) } }() wg.Wait() }

sync.WaitGroup是一個計數的信號量,使main函數所在主線程等待兩個goroutine執行完成後再結束,否則兩個goroutine還在運行時,主線程已經結束。
sync.WaitGroup使用非常簡單,使用Add方法設設置計數器為2,每一個goroutine的函數執行完後,調用Done方法減1。Wait方法表示如果計數器大於0,就會阻塞,main函數會一直等待2個goroutine完成再結束。

Go語言sync庫和WaitGroup的使用