Go 코루틴을 사용하여 병렬 처리를 구현하는 방법은 무엇입니까? 피보나치 수열을 병렬로 계산하는 코루틴을 만듭니다. 코루틴은 병렬 컴퓨팅을 달성하기 위해 채널을 통해 데이터를 전송합니다. 메인 코루틴은 병렬 계산 결과를 수신하고 처리합니다.
Go 코루틴을 사용하여 병렬 처리를 구현하는 방법
코루틴 소개
코루틴은 Go의 경량 동시성 기본 요소로, 고루틴 내에서 실행할 수 있습니다(동시 실행되는 함수). 새로운 스레드나 프로세스를 시작합니다. 이는 동시성 효율성을 향상시키고 메모리 소비를 줄이는 데 도움이 됩니다.
실용 사례: 피보나치 수열의 병렬 계산
코루틴의 병렬 처리 기능을 보여주기 위해 피보나치 수열을 병렬로 계산하는 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 // 并行计算的结果相加后发送到主协程 }
프로그램 실행
After 실행 프로그램을 실행하면 피보나치 수열의 20번째 항목이 터미널에 출력됩니다.
斐波那契数列的第 20 项: 6765
Notes
위 내용은 Go 코루틴을 사용하여 병렬 처리를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!