【Go 语言社区】GO语言多核并行化的问题

时间:2022-05-04
本文章向大家介绍【Go 语言社区】GO语言多核并行化的问题,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
package main
import "fmt"
type Vector []float64
func (v Vector) DoSome(i,n int, u Vector, c chan float64) {
  var sum float64
  for ; i<n; i++ {
    sum += u[i]
  }
  c <- sum 
}
const NCPU =  2
func (v *Vector) DoAll(u Vector) {
  c := make(chan float64, NCPU)   //根据自己电脑的CPU产生对应个数的管道
  for i:=0; i<NCPU; i++ {
    go v.DoSome(i*len(u)/NCPU, (i+1)*len(u)/NCPU, u, c)
  }
  var sum float64 = 0.00
  for i:=0; i<NCPU; i++ {
    sum += <-c 
  }
  fmt.Println(sum)
}
func main() {
  var v Vector
  u := []float64{1.00, 2.00, 3.00, 4.00, 5.00, 6.00}
  v.DoAll(u)
}