WaitGroup是一個計數信號量,能夠用來記錄並維護運行的goroutine,若是WaitGroup的值大於0,Wait方法就會阻塞函數
調用Done方法來減小WaitGroup的值,並最終釋放main函數blog
package main import( "fmt" "runtime" "sync" ) func main(){ //只分配一個邏輯處理器給調度器使用 runtime.GOMAXPROCS(1) //wg用來使main goroutine等待子goroutine結束 var wg sync.WaitGroup //等待兩個子goroutine結束 wg.Add(2) fmt.Println("開啓goroutine") go func(){ defer wg.Done() //循環顯示三遍字母表 for count:=0;count<3;count++{ //循環顯示字母表 for char:='a';char<'a'+26;char++{ fmt.Printf("%c ",char) } } }() go func(){ defer wg.Done() //循環顯示三遍字母表 for count:=0;count<3;count++{ //循環顯示字母表 for char:='A';char<'A'+26;char++{ fmt.Printf("%c ",char) } } }() //main goroutine等待子goroutine結束 wg.Wait() fmt.Println("\ngoroutine結束") }