From c3111e47fcd2a83edc5d370962cf99adc96b2c82 Mon Sep 17 00:00:00 2001 From: 6yf <6yifeng@gmail.com> Date: Fri, 22 Nov 2013 16:34:16 +0800 Subject: [PATCH] =?UTF-8?q?=E2=80=9C=E6=98=BE=E7=A4=BA=E7=9A=84=E2=80=9D?= =?UTF-8?q?=3D>=E2=80=9C=E6=98=BE=E5=BC=8F=E7=9A=84=E2=80=9D;=20rob=20=3D>?= =?UTF-8?q?=20Rob?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ebook/02.7.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ebook/02.7.md b/ebook/02.7.md index 3e811460..87d18f5d 100644 --- a/ebook/02.7.md +++ b/ebook/02.7.md @@ -47,7 +47,7 @@ goroutine是通过Go的runtime管理的一个线程管理器。goroutine通过`g > runtime.Gosched()表示让CPU把时间片让给别人,下次某个时候继续恢复执行该goroutine。 ->默认情况下,调度器仅使用单线程,也就是说只实现了并发。想要发挥多核处理器的并行,需要在我们的程序中显示的调用 runtime.GOMAXPROCS(n) 告诉调度器同时使用多个线程。GOMAXPROCS 设置了同时运行逻辑代码的系统线程的最大数量,并返回之前的设置。如果n < 1,不会改变当前设置。以后Go的新版本中调度得到改进后,这将被移除。这里有一篇rob介绍的关于并发和并行的文章:http://concur.rspace.googlecode.com/hg/talk/concur.html#landing-slide +>默认情况下,调度器仅使用单线程,也就是说只实现了并发。想要发挥多核处理器的并行,需要在我们的程序中显式调用 runtime.GOMAXPROCS(n) 告诉调度器同时使用多个线程。GOMAXPROCS 设置了同时运行逻辑代码的系统线程的最大数量,并返回之前的设置。如果n < 1,不会改变当前设置。以后Go的新版本中调度得到改进后,这将被移除。这里有一篇Rob介绍的关于并发和并行的文章:http://concur.rspace.googlecode.com/hg/talk/concur.html#landing-slide ## channels goroutine运行在相同的地址空间,因此访问共享内存必须做好同步。那么goroutine之间如何进行数据的通信呢,Go提供了一个很好的通信机制channel。channel可以与Unix shell 中的双向管道做类比:可以通过它发送或者接收值。这些值只能是特定的类型:channel类型。定义一个channel时,也需要定义发送到channel的值的类型。注意,必须使用make 创建channel: