我是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
}
- 2 回答
- 0 关注
- 259 浏览
添加回答
举报
0/150
提交
取消