mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-12 05:33:04 +08:00
Update 14.1.md
This commit is contained in:
@@ -55,6 +55,30 @@ Go的并发原语提供了良好的并发设计基础:表达程序结构以便
|
||||
|
||||
还有一些通过实验观察到的现象:在一台1颗CPU的笔记本电脑上,增加GOMAXPROCS到9会带来性能提升。在一台32核的机器上,设置GOMAXPROCS=8会达到最好的性能,在测试环境中,更高的数值无法提升性能。如果设置一个很大的GOMAXPROCS只会带来轻微的性能下降;设置GOMAXPROCS=100,使用“top”命令和“H”选项查看到只有7个活动的线程。
|
||||
|
||||
增加GOMAXPROCS的数值对程序进行并发计算是有好处的;
|
||||
|
||||
请看[goroutine_select2.go](examples/chapter_14/goroutine_select2.go)
|
||||
|
||||
总结:GOMAXPROCS等同于(并发的)线程数凉,在一台核心数多于1个的机器上,会尽可能有等同于核心数的线程在并行运行。
|
||||
|
||||
## 14.1.4 如何用命令行指定使用的核心数量
|
||||
|
||||
使用`flags`包,如下:
|
||||
```go
|
||||
var numCores = flag.Int("n", 2, "number of CPU cores to use")
|
||||
|
||||
in main()
|
||||
flag.Pars()
|
||||
runtime.GOMAXPROCS(*numCores)
|
||||
```
|
||||
|
||||
协程可以通过调用`runtime.Goexit()`来停止,尽管这样做几乎没有必要。
|
||||
|
||||
示例 14.1-[goroutine1.go](examples/chapter_14/goroutine1.go) 介绍了概念:
|
||||
```go
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## 链接
|
||||
|
Reference in New Issue
Block a user