Skip to content

Commit c99fda2

Browse files
committed
Merge commit 'd84679fa2f3528a6c89abb8ba20d1c046a5a5453' into ja
2 parents 20d2585 + d84679f commit c99fda2

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

ebook/02.7.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# 2.7 并发
22

3-
有人把Go比作21世纪的C语言,第一是因为Go语言设计简单,第二,21世纪最重要的就是并行程序设计,而GO从语言层面就支持了并行
3+
有人把Go比作21世纪的C语言,第一是因为Go语言设计简单,第二,21世纪最重要的就是并行程序设计,而Go从语言层面就支持了并行
44

55
## goroutine
66

7-
goroutine是Go并行设计的核心。goroutine说到底其实就是线程,但是他比线程更小,十几个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这些goroutine之间的内存共享。执行goroutine只需极少的栈内存(大概是4~5KB),当然会根据相应的数据伸缩。也正因为如此,可同时运行成千上万个并发任务。goroutine比thread更易用、更高效、更轻便。
7+
goroutine是Go并行设计的核心。goroutine说到底其实就是线程,但是它比线程更小,十几个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这些goroutine之间的内存共享。执行goroutine只需极少的栈内存(大概是4~5KB),当然会根据相应的数据伸缩。也正因为如此,可同时运行成千上万个并发任务。goroutine比thread更易用、更高效、更轻便。
88

99
goroutine是通过Go的runtime管理的一个线程管理器。goroutine通过`go`关键字实现了,其实就是一个普通的函数。
1010

@@ -159,7 +159,7 @@ channel通过操作符`<-`来接收和发送数据
159159
case c <- x:
160160
x, y = y, x + y
161161
case <-quit:
162-
fmt.Println("quit")
162+
fmt.Println("quit")
163163
return
164164
}
165165
}
@@ -187,7 +187,7 @@ channel通过操作符`<-`来接收和发送数据
187187
}
188188

189189
## 超时
190-
有时候会出现goroutine阻塞的情况,那么我们如何避免整个的程序进入阻塞的情况呢?我们可以利用select来设置超时,通过如下的方式实现:
190+
有时候会出现goroutine阻塞的情况,那么我们如何避免整个程序进入阻塞的情况呢?我们可以利用select来设置超时,通过如下的方式实现:
191191

192192
func main() {
193193
c := make(chan int)
@@ -225,11 +225,11 @@ runtime包中有几个处理goroutine的函数:
225225

226226
- NumGoroutine
227227

228-
返回正在执⾏行和排队的任务总数
228+
返回正在执行和排队的任务总数
229229

230230
- GOMAXPROCS
231231

232-
用来设置可以运行的CPU核数
232+
用来设置可以并行计算的CPU核数的最大值,并返回之前的值。
233233

234234

235235

0 commit comments

Comments
 (0)