如何使用 Go 協程實作並行處理?建立協程並行計算斐波那契數列。協程透過 channel 傳遞數據,實現平行計算。主協程接收並處理並行計算的結果。
如何使用Go 協程實作並行處理
協程簡介
協程是Go 中一種輕量級並發原語,它允許在一個goroutine(並發執行的函數)內暫停和恢復執行,而無需啟動新的線程或進程。這有助於提高並發效率並減少記憶體消耗。
實戰案例:並行計算斐波那契數列
為了展示協程的平行處理能力,我們建立一個Go 程式來並行計算斐波那契數列:
package main import ( "fmt" "time" ) func main() { ch := make(chan int) go fib(20, ch) // 启动一个协程计算斐波那契数 time.Sleep(100 * time.Millisecond) // 等待协程完成 result := <-ch // 从 channel 中接收计算结果 fmt.Println("斐波那契数列的第 20 项:", result) } func fib(n int, ch chan int) { if n <= 1 { ch <- 1 return } ch1 := make(chan int) ch2 := make(chan int) go fib(n-1, ch1) // 通过协程并行计算斐波那契数列 go fib(n-2, ch2) f1 := <-ch1 f2 := <-ch2 ch <- f1 + f2 // 并行计算的结果相加后发送到主协程 }
執行程式
執行程式後,會在終端輸出斐波那契數列的第20 項:
斐波那契数列的第 20 项: 6765
#注意事項
以上是如何使用 Go 協程實作並行處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!