GO语言(七)多核并行化的问题

原文链接:http://www.cnblogs.com/xuxu8511/p/3312813.html
 1 package main
 2 
 3 import "fmt"
 4 
 5 type Vector []float64
 6 
 7 func (v Vector) DoSome(i,n int, u Vector, c chan float64) {
 8   var sum float64
 9   for ; i<n; i++ {
10     sum += u[i]
11   }
12   c <- sum 
13 }
14 
15 const NCPU =  2
16 
17 func (v *Vector) DoAll(u Vector) {
18   c := make(chan float64, NCPU)   //根据自己电脑的CPU产生对应个数的管道
19 
20   for i:=0; i<NCPU; i++ {
21     go v.DoSome(i*len(u)/NCPU, (i+1)*len(u)/NCPU, u, c)
22   }
23 
24   var sum float64 = 0.00
25   for i:=0; i<NCPU; i++ {
26     sum += <-c 
27   }
28   fmt.Println(sum)
29 }
30 
31 func main() {
32   var v Vector
33   u := []float64{1.00, 2.00, 3.00, 4.00, 5.00, 6.00}
34 
35   v.DoAll(u)
36 }

 

转载于:https://www.cnblogs.com/xuxu8511/p/3312813.html

上一篇:牛顿迭代法--求任意数的开n次方


下一篇:【A tour of go】练习题