Golang 多核运算
在Golang中,你可以使用runtime
包来利用多核处理器进行并行计算。runtime.GOMAXPROCS
函数可以设置程序可以使用的处理器核心数。runtime.GOMAXPROCS(0)
会设置为机器上的所有核心。
以下是一个简单的例子,使用runtime.GOMAXPROCS(0)
来启动多核并行计算,并使用wg.Wait()
来等待所有goroutines完成工作。
package main
import (
"fmt"
"runtime"
"sync"
)
func process(start, end int, wg *sync.WaitGroup) {
defer wg.Done()
for i := start; i < end; i++ {
// 执行一些计算
fmt.Println("Processing:", i)
}
}
func main() {
runtime.GOMAXPROCS(0) // 设置为所有核心
var wg sync.WaitGroup
// 假设我们有一个任务分片为start和end
start := 0
end := 100
step := 20
for start < end {
wg.Add(1)
go process(start, start+step, &wg)
start += step
}
wg.Wait() // 等待所有goroutines完成
}
在这个例子中,我们有一个process
函数,它接受一个范围作为参数并在这个范围内执行一些计算。main
函数中的代码将这个任务分成多个片段,并且并行地在每个片段上运行process
函数。runtime.GOMAXPROCS(0)
确保程序会使用所有可用的核心。sync.WaitGroup
用于同步,确保主程序会等待所有分片处理完成。
评论已关闭