Skip to content

Commit 20d2585

Browse files
committed
Merge commit 'c3111e47fcd2a83edc5d370962cf99adc96b2c82' into ja
2 parents eea0710 + c3111e4 commit 20d2585

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

ebook/02.7.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ goroutine是通过Go的runtime管理的一个线程管理器。goroutine通过`g
4747

4848
> runtime.Gosched()表示让CPU把时间片让给别人,下次某个时候继续恢复执行该goroutine。
4949
50-
>默认情况下,调度器仅使用单线程,也就是说只实现了并发。想要发挥多核处理器的并行,需要在我们的程序中显示的调用 runtime.GOMAXPROCS(n) 告诉调度器同时使用多个线程。GOMAXPROCS 设置了同时运行逻辑代码的系统线程的最大数量,并返回之前的设置。如果n < 1,不会改变当前设置。以后Go的新版本中调度得到改进后,这将被移除。这里有一篇rob介绍的关于并发和并行的文章http://concur.rspace.googlecode.com/hg/talk/concur.html#landing-slide
50+
>默认情况下,调度器仅使用单线程,也就是说只实现了并发。想要发挥多核处理器的并行,需要在我们的程序中显式调用 runtime.GOMAXPROCS(n) 告诉调度器同时使用多个线程。GOMAXPROCS 设置了同时运行逻辑代码的系统线程的最大数量,并返回之前的设置。如果n < 1,不会改变当前设置。以后Go的新版本中调度得到改进后,这将被移除。这里有一篇Rob介绍的关于并发和并行的文章http://concur.rspace.googlecode.com/hg/talk/concur.html#landing-slide
5151
5252
## channels
5353
goroutine运行在相同的地址空间,因此访问共享内存必须做好同步。那么goroutine之间如何进行数据的通信呢,Go提供了一个很好的通信机制channel。channel可以与Unix shell 中的双向管道做类比:可以通过它发送或者接收值。这些值只能是特定的类型:channel类型。定义一个channel时,也需要定义发送到channel的值的类型。注意,必须使用make 创建channel:

0 commit comments

Comments
 (0)