【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)
}

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2016-01-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券