我刚开始学围棋。我正在尝试进行总和计算。下面的代码
func test() {
start := time.Now()
ret := make(chan int)
go foo(1, 100000, ret)
ssum := <- ret
elap := time.Since(start)
fmt.Println(ssum)
fmt.Printf("used time in milli is %d", elap)
}
func foo(start, end int, ret chan int) {
if start > end {
ret <- 0
return
}
if end - start <= 10000 {
sum := 0
for i := start; i <=end; i++ {
sum += i
}
ret <- sum
return
}
mid := (end - start) / 2
leftRet := make(chan int)
go foo(start, mid, leftRet)
leftNum := <- leftRet
rightRet := make(chan int)
go foo(mid+1, end, rightRet)
rightNum := <- rightRet
ret <- leftNum + rightNum
}
上面的代码做并行计算吗?由于 goroutine 不是多进程,甚至不是多线程。我不确定 goroutine 是否可以用来做 parrell 计算。
为什么我会出现内存激增和 oom?
HUH函数
相关分类