How to use Go coroutines to implement parallel processing? Create a coroutine to calculate the Fibonacci sequence in parallel. Coroutines transfer data through channels to achieve parallel computing. The main coroutine receives and processes the results of parallel calculations.
How to use Go coroutines to implement parallel processing
Introduction to coroutines
Coroutines are a lightweight concurrency primitive in Go that allow execution to be paused and resumed within a goroutine (concurrently executed function) without starting a new thread or process. This helps improve concurrency efficiency and reduce memory consumption.
Practical case: Parallel calculation of Fibonacci numbers
In order to demonstrate the parallel processing capabilities of coroutines, we create a Go program to calculate Fibonacci numbers in parallel :
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 // 并行计算的结果相加后发送到主协程 }
Run the program
After running the program, the 20th item of the Fibonacci sequence will be output in the terminal:
斐波那契数列的第 20 项: 6765
Note
The above is the detailed content of How to implement parallel processing using Go coroutines?. For more information, please follow other related articles on the PHP Chinese website!