微小改动

This commit is contained in:
6yf
2013-11-22 17:09:24 +08:00
parent be4757bdcd
commit ce37382a9d

View File

@@ -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核数的最大值,并返回之前的值。