本程式參考:GO語言實戰 GO IN ACTION
package main
import (
"fmt"
"runtime"
"sync"
)
func main(){
//配置設定一個邏輯處理器給排程器使用
runtime.GOMAXPROCS(1)
//wg來等待程式完成
//計數加2,表示要等待兩個goroutine
var wg sync.WaitGroup
wg.Add(2)
fmt.Println("Start Goroutines")
//聲明一個匿名函數,并建立一個goroutine
go func() {
//在函數退出時調用DOne來通知main函數工作已經完成
defer wg.Done()
//顯示字母表三次
for count:=0;count<3;count++{
for char :='a';char <'a'+26;char ++{
fmt.Printf("%c",char)
}
}
}()
//聲明一個匿名函數,并建立一個goroutine
go func() {
//在函數退出時調用DOne來通知main函數工作已經完成
defer wg.Done()
//顯示字母表三次
for count:=0;count<3;count++{
for char :='A';char <'A'+26;char ++{
fmt.Printf("%c",char)
}
}
}()
//等待goroutine結束
fmt.Println("waiting to finish")
wg.Wait()
fmt.Println("\nTerminating Program")
}
/*
runtime.GOMAXPROCS 去設定CPU,Golang 預設使用所有的cpu核
*/
運作結果:
修改:
runtime.GOMAXPROCS(2) 備注:電腦為雙核處理器
當程式删除
wg.Wait()後,運作結果