make loop

This commit is contained in:
chai2010
2016-01-08 19:34:37 +08:00
parent cf47ffed24
commit ff2df64309
2 changed files with 4 additions and 4 deletions

View File

@@ -1,7 +1,7 @@
### 9.8.1. 動態棧 ### 9.8.1. 動態棧
每一OS线程都有一固定大小的内存块(一般是2MB)来做栈,这个栈会用来存储当前正在被用或起(指在用其它函数时)的函数的内部变量。这个固定大小的栈同时很大又很小。因2MB的栈对于一个小小的goroutine来说是很大的存浪,比如对于我们用到的,一个只是用WaitGroup之后关闭channel的goroutine来说。而对于go程序来说同时创建成百上千个gorutine是非常普遍的如果每一goroutine都需要这么大的栈的话,那这么多的goroutine就不太可能了。除去大小的问题之外,固定大小的栈对于更复杂或者更深次的递归函数调用来说显然是不的。改固定的大小可以提升空间的利用率允许创建更多的线程,且可以允更深的递归调用,不过这两者是法同时兼备的。 每一OS程都有一固定大小的內存塊(一般是2MB)來做棧,這個棧會用來存儲當前正在被調用或起(指在調用其它函數時)的函數的內部變量。這個固定大小的棧同時很大又很小。因2MB的棧對於一個小小的goroutine來説是很大的存浪,比如對於我們用到的,一個隻是用WaitGroup之後關閉channel的goroutine來説。而對於go程序來説同時創建成百上韆個gorutine是非常普遍的如果每一goroutine都需要這麽大的棧的話,那這麽多的goroutine就不太可能了。除去大小的問題之外,固定大小的棧對於更複雜或者更深次的遞歸函數調用來説顯然是不的。改固定的大小可以提陞空間的利用率允許創建更多的程,且可以允更深的遞歸調用,不過這兩者是法同時兼備的。
相反,一goroutine以一很小的栈开始其生命期,一般需要2KB。一goroutine的,和操作系统线程一样,会保存其活跃或挂起的函数调用的本地但是和OS线程不太一的是一goroutine的大小不是固定的;的大小会根据需要动态地伸。而goroutine的的最大值有1GB传统的固定大小的线程栈要大得多,管一般情大多goroutine都不需要这么大的 相反,一goroutine以一很小的棧開始其生命期,一般需要2KB。一goroutine的,和操作繫統線程一樣,會保存其活躍或掛起的函數調用的本地但是和OS程不太一的是一goroutine的大小不是固定的;的大小會根據需要動態地伸。而goroutine的的最大值有1GB傳統的固定大小的線程棧要大得多,管一般情大多goroutine都不需要這麽大的
练习 9.4: 建一流水线程序支持用channel接任意量的goroutine在跑爆存之前,可以建多少流水线阶段?一个变量通过整个流水线需要用多久?(这个练习题翻译不是很定。。) 練習 9.4: 建一流水程序支持用channel接任意量的goroutine在跑爆存之前,可以建多少流水線階段?一個變量通過整個流水需要用多久?(這個練習題翻譯不是很定。。)

View File

@@ -1,6 +1,6 @@
## 9.8. Goroutines和線程 ## 9.8. Goroutines和線程
在上一章中我们说goroutine和操作系统的线程区别可以先忽略。尽管两者的区别实际上只是一量的别,但量变会引起质变的道理同样适用于goroutine和线程。在正是我们来区分开两者的最佳时机 在上一章中我們説goroutine和操作繫統的線程區别可以先忽略。盡管兩者的區别實際上隻是一量的别,但量變會引起質變的道理同樣適用於goroutine和程。在正是我們來區分開兩者的最佳時機
{% include "./ch9-08-1.md" %} {% include "./ch9-08-1.md" %}