并行处理 – Golang:如何验证运行Go程序的处理器数量

前端之家收集整理的这篇文章主要介绍了并行处理 – Golang:如何验证运行Go程序的处理器数量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是Google Go(Golang)的新手.我的问题与这篇文章 What exactly does runtime.Gosched do?有关.代码结构如下所示.我的问题是,当我更改GOMAXPROCS中的处理器数量时,如何验证它运行的处理器数量.当我做’顶’时,它显示a.out过程,即使GOMAXPROCS超过1,也会消耗100%或更少的资源.我将非常感谢你的帮助.
package main

import (
    "fmt"
    "runtime"
    "sync"
)

var wg sync.WaitGroup

func doTasks() {
    fmt.Println(" Doing task ")
    for ji := 1; ji < 100000000; ji++ {
        for io := 1; io < 10; io++ {
            //Some computations
        }
    }
    runtime.Gosched()

    wg.Done()
}

func main() {
    wg.Add(1)
    runtime.GOMAXPROCS(1) // or 2 or 4
    go doTasks()
    doTasks()
    wg.Wait()
}
在给定时间进程可以运行的最大逻辑cpu数量不超过 runtime.GOMAXPROCS(0)runtime.NumCPU()的最小值.
func MaxParallelism() int {
    maxProcs := runtime.GOMAXPROCS(0)
    numcpu := runtime.Numcpu()
    if maxProcs < numcpu {
        return maxProcs
    }
    return numcpu
}

猜你在找的Go相关文章