我是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 }