为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕村9548890 2021-05-12 17:50:14
我是Google Go(Golang)的新手。我的问题与这篇文章有关。runtime.Gosched到底做什么?。代码的结构如下所示。我的问题是,当我更改GOMAXPROCS中的处理器数量时,如何验证它正在运行多少个处理器。当我执行“ top”操作时,即使GOMAXPROCS大于1,它也会显示a.out进程消耗100%或更少的资源。对于您的帮助,我将不胜感激。package mainimport (    "fmt"    "runtime"    "sync")var wg sync.WaitGroupfunc 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()}
查看完整描述

2 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

该过程可以在给定的时间内运行的逻辑CPU的数量最多不超过最小的runtime.GOMAXPROCS(0)和runtime.NumCPU()。


func MaxParallelism() int {

    maxProcs := runtime.GOMAXPROCS(0)

    numCPU := runtime.NumCPU()

    if maxProcs < numCPU {

        return maxProcs

    }

    return numCPU

}


查看完整回答
反对 回复 2021-05-24
  • 2 回答
  • 0 关注
  • 259 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信