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%。測試

相關文章
相關標籤/搜索