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