gpt4 book ai didi

go - 在双核 cpu 上运行 GO runtime.GOMAXPROCS(4)

转载 作者:IT王子 更新时间:2023-10-29 02:31:30 25 4
gpt4 key购买 nike

对不起,如果这听起来很愚蠢。

如果在 runtime.NumCpu() == 2 时运行 runtime.GOMAXPROCS(4) 会发生什么?

最佳答案

runtime.GOMAXPROCS 控制将创建多少操作系统级线程来运行程序的 goroutine(以及为其提供动力的运行时)。 (运行时本身会为自己创建多个线程,但这不是重点。)

基本上,这就是将要发生的一切。

但据推测,您实际上是想问“这将如何影响我的程序的性能?”之类的问题,对吗?如果是,答案是“视情况而定”。我不确定您是否有机会使用只有一个 CPU 和一个内核的系统(基本上是大多数消费级 IBM PC 兼容计算机,直到具有所谓的“Pentium® CPU 一代”)超线程”技术),但这些系统通常在“单核”上运行成百上千个操作系统线程(该术语当时在主流中并不存在,但还可以)。

另一件需要考虑的事情是你的程序不是孤立运行的:有其他程序在同一个 CPU 上运行,内核本身也有几个内核线程。您可以使用 tophtop 之类的工具来评估您的系统当前在所有核心上调度的线程数。

此时,您可能想知道为什么 Go 运行时默认创建与物理内核一样多的线程来为 goroutine 提供动力。

这大概来自一个简单的事实,即在典型的服务器端工作负载中,您的程序将是某种“主要程序”。换句话说,它的线程与线程的争用其他进程和内核将相当低。

关于go - 在双核 cpu 上运行 GO runtime.GOMAXPROCS(4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51687856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com