From 6e04c75a944b7dcf5b17d44f4ec554171a60f185 Mon Sep 17 00:00:00 2001 From: glight2000 <173959153@qq.com> Date: Thu, 24 Dec 2015 10:52:02 +0800 Subject: [PATCH] Update 14.1.md --- eBook/14.1.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/eBook/14.1.md b/eBook/14.1.md index 9f6987d..220df5e 100644 --- a/eBook/14.1.md +++ b/eBook/14.1.md @@ -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 +``` + + ## 链接