ch8 ch8.1不通顺修改

This commit is contained in:
Xargin
2016-01-22 14:57:10 +08:00
parent 103efa03a4
commit 17f7b25352
4 changed files with 13 additions and 13 deletions

View File

@@ -1,6 +1,6 @@
## 8.1. Goroutines
在Go語言中每一個併發的執行單元叫作一個goroutine。設想這里一個程序有兩個函數,一個函數做一些計算,另一個輸出一些結果,假設兩個函數沒有相互之間的調用關繫。一個線性的程序會先調用其中的一個函數,然後再調用一個,但如果是在有兩個甚至更多個goroutine的程序中,對兩個函數的調用就可以在同一時間。我們馬上就會看到這樣的一個程序。
在Go語言中每一個併發的執行單元叫作一個goroutine。設想這里一個程序有兩個函數,一個函數做計算,另一個輸出結果,假設兩個函數沒有相互之間的調用關繫。一個線性的程序會先調用其中的一個函數,然後再調用一個。如果程序中包含多個goroutine對兩個函數的調用則可能發生在同一時刻。馬上就會看到這樣的一個程序。
如果你使用過操作繫統或者其它語言提供的線程那麽你可以簡單地把goroutine類比作一個線程這樣你就可以寫出一些正確的程序了。goroutine和線程的本質區别會在9.8節中講。
@@ -11,7 +11,7 @@ f() // call f(); wait for it to return
go f() // create a new goroutine that calls f(); don't wait
```
下面的例子main goroutine計算第45個菲波那契數。由於計算函數使用了效率非常低的遞歸,所以會運行相當可觀的一段時間,在期間我們想讓用戶看到一個可見的標識來表明程序依然在正常運行,所以顯示一個動畵的小圖標:
下面的例子main goroutine計算菲波那契數列的第45個元素值。由於計算函數使用低的遞歸,所以會運行相當時間,在期間我們想讓用戶看到一個可見的標識來表明程序依然在正常運行,所以來做一個動畵的小圖標:
<u><i>gopl.io/ch8/spinner</i><u>
```go
@@ -45,6 +45,6 @@ func fib(x int) int {
Fibonacci(45) = 1134903170
```
然後主函數返迴。主函數返迴時所有的goroutine都會直接打斷程序退出。除了從主函數退出或者直接退出程序之外沒有其它的編程方法能夠讓一個goroutine來打斷另一個的執行但是我們之後可以看到,可以通過goroutine之間的通信來讓一個goroutine請求請求其它的goroutine讓其自己結束執行。
然後主函數返迴。主函數返迴時所有的goroutine都會直接打斷,程序退出。除了從主函數退出或者直接終止程序之外沒有其它的編程方法能夠讓一個goroutine來打斷另一個的執行但是之後可以看到一種方式來實現這個目的通過goroutine之間的通信來讓一個goroutine請求其它的goroutine被請求的goroutine自行結束執行。
註意這里的兩個獨立的單元是如何進行組合的spinning和菲波那契的計算。每一個都是寫在獨立的函數中,但是每一個函數都會併發地執行。
留意一下這里的兩個獨立的單元是如何進行組合的spinning和菲波那契的計算。分别在獨立的函數中,但兩個函數會同時執行。