From ce37382a9da92fb521389eb7b4a0a53cc31b340c Mon Sep 17 00:00:00 2001 From: 6yf <6yifeng@gmail.com> Date: Fri, 22 Nov 2013 17:09:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E5=B0=8F=E6=94=B9=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ebook/02.7.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ebook/02.7.md b/ebook/02.7.md index 3e811460..1f621501 100644 --- a/ebook/02.7.md +++ b/ebook/02.7.md @@ -1,10 +1,10 @@ # 2.7 并发 -有人把Go比作21世纪的C语言,第一是因为Go语言设计简单,第二,21世纪最重要的就是并行程序设计,而GO从语言层面就支持了并行。 +有人把Go比作21世纪的C语言,第一是因为Go语言设计简单,第二,21世纪最重要的就是并行程序设计,而Go从语言层面就支持了并行。 ## goroutine -goroutine是Go并行设计的核心。goroutine说到底其实就是线程,但是他比线程更小,十几个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这些goroutine之间的内存共享。执行goroutine只需极少的栈内存(大概是4~5KB),当然会根据相应的数据伸缩。也正因为如此,可同时运行成千上万个并发任务。goroutine比thread更易用、更高效、更轻便。 +goroutine是Go并行设计的核心。goroutine说到底其实就是线程,但是它比线程更小,十几个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这些goroutine之间的内存共享。执行goroutine只需极少的栈内存(大概是4~5KB),当然会根据相应的数据伸缩。也正因为如此,可同时运行成千上万个并发任务。goroutine比thread更易用、更高效、更轻便。 goroutine是通过Go的runtime管理的一个线程管理器。goroutine通过`go`关键字实现了,其实就是一个普通的函数。 @@ -159,7 +159,7 @@ channel通过操作符`<-`来接收和发送数据 case c <- x: x, y = y, x + y case <-quit: - fmt.Println("quit") + fmt.Println("quit") return } } @@ -187,7 +187,7 @@ channel通过操作符`<-`来接收和发送数据 } ## 超时 -有时候会出现goroutine阻塞的情况,那么我们如何避免整个的程序进入阻塞的情况呢?我们可以利用select来设置超时,通过如下的方式实现: +有时候会出现goroutine阻塞的情况,那么我们如何避免整个程序进入阻塞的情况呢?我们可以利用select来设置超时,通过如下的方式实现: func main() { c := make(chan int) @@ -225,11 +225,11 @@ runtime包中有几个处理goroutine的函数: - NumGoroutine - 返回正在执⾏行和排队的任务总数 + 返回正在执行和排队的任务总数 - GOMAXPROCS - 用来设置可以运行的CPU核数 + 用来设置可以并行计算的CPU核数的最大值,并返回之前的值。