Go 語言透過內建語法控制函數並發,包括:go func() 建立 Goroutine,sync.Mutex 互斥鎖保護共享數據,sync.WaitGroup 等待群組協調 Goroutine 執行,sync.Cond 條件變數協作控制。這些內建語法支援並發執行、資料保護和協作控制,優化程式效能,並行計算斐波那契數列案例展示了其實戰應用。
Go 語言函數並發控制的內建語法與功能介紹
Go 語言中的並發是透過Goroutine 實現的,Goroutine是Go 語言中輕量級的執行緒。透過使用 Goroutine,我們可以編寫並發程序,以充分利用多核心 CPU 的優勢,提升程式效能。
內建語法
Go 語言提供了以下內建語法來控制函數並發:
功能
這些內建語法提供了以下功能:
實戰案例
以下是一個計算斐波那契數列的實戰案例,示範如何使用Goroutine 進行並發計算:
package main import ( "fmt" "sync" ) // 计算斐波那契数列 func fibonacci(n int) int { if n <= 1 { return n } return fibonacci(n-1) + fibonacci(n-2) } func main() { // 创建互斥锁保护计数器 var mu sync.Mutex // 创建等待组等待所有 Goroutine 完成 var wg sync.WaitGroup // 并发计算斐波那契数列 for i := 0; i < 10; i++ { wg.Add(1) go func(i int) { defer wg.Done() result := fibonacci(i) // 使用互斥锁保护计数器 mu.Lock() fmt.Printf("Fibonacci(%d) = %d\n", i, result) mu.Unlock() }(i) } // 等待所有 Goroutine 完成 wg.Wait() }
這個程式會並行計算斐波那契數列前10 個數,並使用互斥鎖保護輸出,確保每個數的列印都是依序進行的。
以上是golang函數並發控制的內建語法與功能介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!