package main
import (
"fmt"
"runtime"
"sync"
)
var wg sync.WaitGroup
func add1(sum int, ch, ch1 chan int) {
sum = <-ch
a := <-ch1
i := 0
for i = 1 + a; i <= 200000+a; i++ {
sum += i
}
ch1 <- i - 1
ch <- sum
defer wg.Done()
}
func main() {
ch := make(chan int, 1)
ch1 := make(chan int, 1)
defer close(ch)
defer close(ch1)
sum := 0
ch <- 0
ch1 <- 0
runtime.GOMAXPROCS(4)
for i := 0; i < 5; i++ {
wg.Add(1)
go add1(sum, ch, ch1)
}
wg.Wait()
sum = <-ch
fmt.Println(sum)
}
go:通过channel和协程计算1到100w的值
最新推荐文章于 2024-10-18 15:00:26 发布
该代码示例展示了在Go语言中使用goroutine和channel进行并发计算。通过创建一个WaitGroup来协调多个并发执行的函数,每个函数从channel接收参数,计算累加和,然后将结果回传。最终主函数等待所有工作完成并打印总和。
摘要由CSDN通过智能技术生成