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