Răsfoiți Sursa

Update 14.1.md

glight2000 10 ani în urmă
părinte
comite
6e04c75a94
1 a modificat fișierele cu 24 adăugiri și 0 ștergeri
  1. 24 0
      eBook/14.1.md

+ 24 - 0
eBook/14.1.md

@@ -55,6 +55,30 @@ Go的并发原语提供了良好的并发设计基础:表达程序结构以便
 
 
 还有一些通过实验观察到的现象:在一台1颗CPU的笔记本电脑上,增加GOMAXPROCS到9会带来性能提升。在一台32核的机器上,设置GOMAXPROCS=8会达到最好的性能,在测试环境中,更高的数值无法提升性能。如果设置一个很大的GOMAXPROCS只会带来轻微的性能下降;设置GOMAXPROCS=100,使用“top”命令和“H”选项查看到只有7个活动的线程。
 还有一些通过实验观察到的现象:在一台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
+```
+
+
 
 
 
 
 ## 链接
 ## 链接