[Go] Go的WaitGroup計數信號量

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結束")
}
相關文章
相關標籤/搜索