更多的CPU是否会让程序更快地运行,取决于程序解决的问题。Go语言提供并发操作(例如Goroutines和channels),但仅在代码本质上是并行的时候,才会真正并行执行。通过添加更多CPU,不能加速那些本质上是顺序执行的问题,而如果可以将这些分为并行执行的话,有时会显着地提高效率。
有时添加更多CPU还会减慢程序。程序如果启用系统多线程,然后花费更多的时间在同步互斥和通讯上来优化一些计算,可能会让程序有明显的下降。这是因为在不同的线程之间传递数据,涉及上下文的传递,这个过程会随着CPU的增加而增加。例如,增加线程数量(CPU)更有可能减慢它而不是加速它
有关此主题的更多详细信息,请参阅https://blog.golang.org/2013/01/concurrency-is-not-parallelism.html。