加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 19:22:46 所属栏目:大数据 来源:网络整理
导读:我是Google Go(Golang)的新手.我的问题与这篇文章 What exactly does runtime.Gosched do?有关.代码结构如下所示.我的问题是,当我更改GOMAXPROCS中的处理器数量时,如何验证它运行的处理器数量.当我做’顶’时,它显示a.out过程,即使GOMAXPROCS超过1,也会消耗1
我是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
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读