为什么 Go 语句不并行执行?
在你的 Go 代码中,你尝试使用 goroutine 并发执行 sum 函数。然而,尽管您的系统上有多个核心可用,但您会遇到仅使用一个核心的问题。
要纠正此问题,您需要配置程序以允许并行处理。这是通过设置 GOMAXPROCS 环境变量或使用 runtime.GOMAXPROCS 函数来指定运行时支持可以利用的操作系统线程数来实现的。
在某些情况下,增加 GOMAXPROCS 的值实际上可以使您的程序慢点。当您的程序包含多个通过通道频繁通信的 goroutine 时,就会发生这种情况。在线程之间发送数据所涉及的上下文切换代价变得很大,对性能产生不利影响。
Go 的 goroutine 调度程序尚未完全优化操作系统线程的使用。不过,预计未来会有所改进,以更有效地处理此类案件。在此之前,建议根据每个应用程序调整 GOMAXPROCS 的值以实现最佳性能。
以上是为什么我的 Go 代码不使用多核进行并行处理?的详细内容。更多信息请关注PHP中文网其他相关文章!