1. 程式人生 > >Go語言學習筆記-使用Goroutine

Go語言學習筆記-使用Goroutine

一個 輸出 就是 使用 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