猿问

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

我是Google Go(Golang)的新手。我的问题与这篇文章有关。runtime.Gosched到底做什么?。代码的结构如下所示。我的问题是,当我更改GOMAXPROCS中的处理器数量时,如何验证它正在运行多少个处理器。当我执行“ top”操作时,即使GOMAXPROCS大于1,它也会显示a.out进程消耗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()

}


慕村9548890
浏览 260回答 2
2回答

陪伴而非守候

该过程可以在给定的时间内运行的逻辑CPU的数量最多不超过最小的runtime.GOMAXPROCS(0)和runtime.NumCPU()。func MaxParallelism() int {&nbsp; &nbsp; maxProcs := runtime.GOMAXPROCS(0)&nbsp; &nbsp; numCPU := runtime.NumCPU()&nbsp; &nbsp; if maxProcs < numCPU {&nbsp; &nbsp; &nbsp; &nbsp; return maxProcs&nbsp; &nbsp; }&nbsp; &nbsp; return numCPU}
随时随地看视频慕课网APP

相关分类

Go
我要回答