Go語言學習筆記-使用Goroutine
阿新 • • 發佈:2019-04-06
一個 輸出 就是 使用 tin fmt 我們 pos 可見
並發是編程語言提供的一種常見的功能,Go語言提供了Goroutine讓開發者能夠處理並發操作。
下面是一個模擬阻塞的操作:
package main
import (
"fmt"
"time"
)
func slowFunc() {
time.Sleep(time.Second * 2)
fmt.Println("sleeper() finished")
}
func main() {
slowFunc()
fmt.Println("print until slowFunc() completes")
}
在該程序中,slowFunc()函數返回前程序不會輸出任何內容,假設我們的程序在該函數執行中還需要同時進行其他任務,我們可以使用Goroutine來實現這一點:
package main
import ( "fmt" "time" )
func slowFunc() { time.Sleep(time.Second * 2) fmt.Println("sleeper() finished") }
func main() { go slowFunc() fmt.Println("main()") time.Sleep(time.Second * 3) }
運行該程序我們發現"main()"會被立即輸出,而不久後還會看到"sleeper() finished",可見使用go關鍵字+函數名的goroutine不會使得main函數等待slowFunc()執行完畢,而是繼續執行下面的語句,這就是Go語言中並發編程的簡單使用方法。
如果我們不在main函數末尾添加time.Sleep(time.Second * 3),將導致"main()"輸出後程序立即結束,不會等待goroutine返回。
Go語言學習筆記-使用Goroutine