Goroutine - cruisechang/wiki-golang GitHub Wiki

Goroutine相關函數

runtime.Goexit

呼叫此函數的Goroutine會被終止。

終止前會執行此函數位被執行的defer。

Goroutine狀態設置為Gdead。

runtime.Gosched

呼叫此函數的Goroutine會暫時讓出cpu時間,讓同範圍內其他goroutine有機會執行。

runtime.Gosched()只是讓本執行範圍內的goroutine有機會執行,

但不會等到他執行結束。以下範例不能保證哪個print會先被執行。

func main(){
    go func(){fmt.Printf("pring in go \n") }()
    runtime.Gosched()
    fmt.Println("print after runtime.Ggshced")
}

確保go函數內使用的變數不被外界更動。

可用傳入參數方式,把使用的變數變成區域變數。


go func(id string){
    fmt.Printf("My id is :%s. \n",id)
}("8769")
//傳入參數