Goroutines 是轻量级进程,由 Go 运行时自动将时间切片到一个或多个操作系统线程上。(这是Go 的一个非常酷的功能!)
假设我有一个像网络服务器这样的并发应用程序。在我的假设程序中同时发生了很多事情,没有太多的非并发(阿姆达尔定律)比率。
似乎当前使用的操作系统线程的默认数量是 1。这是否意味着只有一个 CPU 内核被使用?
如果我开始我的程序
runtime.GOMAXPROCS(runtime.NumCPU())
这会合理有效地使用我 PC 上的所有内核吗?
使用更多操作系统线程是否有任何“并行松弛”好处,例如通过一些启发式
runtime.GOMAXPROCS(runtime.NumCPU() * 2)
?
慕容森
相关分类