您的位置:首页 > 编程语言 > Go语言

golang思考之多核并行

2015-10-17 00:00 281 查看
摘要: 有些资料显示golang实现了并发,离多核并行还有很远。学习吧测试发现golang实现了多核并行。

有些资料显示golang实现了并发,离多核并行还有很远。学习吧测试发现golang实现了多核并行。

package main

import "fmt"

func main() {
for i := 0; i < 10; i++ {
var sum int64 = 0
var j int64
for j = 0; j < 1000000000; j++ {
sum += j
}
fmt.Println("sum:", sum)
}
}

运行时间:6.254s。

多核并行:

package main

import (
"fmt"
"runtime"
)

func main() {
runtime.GOMAXPROCS(4)
ch := make(chan int64, 10)
for i := 0; i < 10; i++ {
go func() {
var sum int64 = 0
var j int64
for j = 0; j < 1000000000; j++ {
sum += j
}
ch <- sum
}()
}
for i := 0; i < 10; i++ {
fmt.Println("sum:", <-ch)
}
}

运行时间:2.057s。系统监视器显示4个核都运行到了100%。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  golang 多核并行