验证正在运行的 Go 程序的处理器数量
在 Golang 中,runtime.GOMAXPROCS 函数允许您设置最大处理器数量程序可用的核心。但是,它可能并不总是反映实际使用的处理器数量。本文介绍了如何验证 Go 程序主动使用的处理器数量。
提供的代码片段摘自有关 runtime.Gosched 的讨论,演示了一个简单的 Go 程序,其中包含单个 goroutine 和不同的值runtime.GOMAXPROCS.
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() }
要验证程序正在使用的处理器数量,建议的方法是使用 runtime.NumCPU 函数。此函数返回系统上可用逻辑 CPU 的总数,即使对于具有超线程的计算机也是如此。
确定最大并行度的公式如下:
func MaxParallelism() int { maxProcs := runtime.GOMAXPROCS(0) numCPU := runtime.NumCPU() if maxProcs < numCPU { return maxProcs } return numCPU }
以上是如何准确判断Go程序运行时使用的处理器数量?的详细内容。更多信息请关注PHP中文网其他相关文章!