跳至主要内容

Goroutine

Goroutine 基礎觀念

  • main 函式執行時就會創造一個 goroutine
  • main 函式結束時會關閉所有 goroutine

基於上述理由,下列範例代碼的輸出結果為:

main start
main end

以上輸出結果類似 JavaScript 調用非同步函式而未使用 Promise 或 async/await 語法。

若將範例代碼 line 12 反註解,輸出結果將改為:

main start
create a goroutine
main end
範例代碼
package main

import "fmt"

func tryGoroutine() {
fmt.Println("create a goroutine")
}

func main() {
fmt.Println("main start")
go tryGoroutine()
// time.Sleep(time.Second)
fmt.Println("main end")
}

mutex 互斥鎖

mutex 是 mutual exclusion(相互排除)的簡寫。在計算機科學中常指多個執行緒或進程之間對共享資源進行操作時,為了避免競爭條件而設計的一種技術。通過對共享資源進行上鎖的方式,保證同一時間只有一個執行緒或進程可存取該資源,以確保資源的一致性和正確性。

互斥鎖示意圖

mutex image