40.蛤蟆筆記go語言——並發

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

40.蛤蟆筆記go語言——並發

goroutine是Go並發能力的核心要素。

goroutine有簡單的模型:它是與其他goroutine並存執行的,有著相同地址空間的函數。

goroutine是一個普通的函數,只是需要使用保留字go作為開頭。

雖然goroutine是並發執行的,但是它們並不是並行啟動並執行。如果不告訴Go額外的東西,同一時刻只會有一個goroutine執行。利用runtime.GOMAXPROCS(n)可以設定goroutine並存執行的數量。如果不希望修改任何原始碼,同樣可以通過設定環境變數 GOMAXPROCS 為目標值。

更多關於channel

當在Go中用ch :=make(chan bool)建立chennel時,bool型的無緩衝channel會被建立。這對於程式來說意味著什麼呢?首先,如果讀取(value := <-ch)它將會被阻塞,直到有資料接收。其次,任何發送(ch<-5)將會被阻塞,直到資料被讀出。無緩衝channel是在多個goroutine之間同步很棒的工具。不過Go也允許指定channel的緩衝大小,很簡單,就是channel可以儲存多少元素。 ch := make(chan bool, 4),建立了可以儲存 4 個元素的 bool 型 channel。在這個channel中,前4個元素可以無阻塞的寫入。當寫入第5 元素時,代碼將會阻塞,直到其他goroutine從channel中讀取一些元素,騰出空間。

 

 

 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.