【发布时间】:2013-07-25 20:45:36
【问题描述】:
Goroutines 是轻量级的进程,由 Go 运行时自动时间分片到一个或多个操作系统线程上。 (这是 Go 的一个非常酷的功能!)
假设我有一个像网络服务器这样的并发应用程序。在我的假设程序中同时发生了很多事情,没有太多的非并发(阿姆达尔定律)比率。
目前使用的操作系统线程的默认数量似乎是1。这是否意味着只有一个CPU核心被使用?
如果我开始我的程序
runtime.GOMAXPROCS(runtime.NumCPU())
这会合理有效地使用我 PC 上的所有内核吗?
使用更多操作系统线程是否有任何“并行松弛”的好处,例如通过一些启发式方法
runtime.GOMAXPROCS(runtime.NumCPU() * 2)
?
【问题讨论】:
标签: multithreading go