Golang並發(一)- 並發的介紹

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

People can only lose when they give up fighting, so long as they insist on fighting, they will not lose.

人,只有在放棄戰鬥的時候才算輸,只要堅持戰鬥,就還沒輸。

Golang是並發語言而不是並行語言。

那麼並行和並發有什麼千絲萬縷的關係的呢?

什麼是並發,並行?

並發就是一次性做大量的事情的能力。

1. 解釋一:並行是指兩個或者多個事件在同一時刻發生;而並發是指兩個或多個事件在同一時間間隔發生。

    例如: 每天早上10分鐘我洗臉,刷牙,吃早飯等等很多事情,這就是並發。  我一邊刷牙的同時在燒水做飯這就是並行。

    並發的關鍵是你有處理多個任務的能力,不一定要同時。並行的關鍵是你有同時處理多個任務的能力。

 

2. 解釋二:並行是在不同實體上的多個事件,並發是在同一實體上的多個事件。

 

3.解釋三:在一台處理器上“同時”處理多個任務,在多台處理器上同時處理多個任務。如hadoop分布式叢集

    所以並發編程的目標是充分的利用處理器的每一個核,以達到最高的處理效能。

 

用技術的層面來說明:

    假如一個web網頁中有視頻播放和檔案下載兩個動作,當瀏覽器在單核的處理器下運行時, CPU核心會在這兩個事件中來回切換,(同時)播放視頻和下載,這就稱為並發。並發進程在不同的時間點開始並有著重疊的執行循環。

 在肉眼上感知到的是同時的。

     假如你的CPU是多核處理器,那麼下載和播放會在不同的CPU核心同時執行,這就是並行。

    並行並不一定使執行時間更快。這是因為並行啟動並執行組件可能必須相互連信。例如,在我們的瀏覽器中,當檔案下載完成時,應該將它傳遞給使用者,比如使用快顯視窗。這種通訊發生在負責下載的組件和負責呈現使用者介面的組件之間。這種通訊開銷在並發系統中很低。當組件在多個核心中並行運行時,這種通訊開銷很高。因此並行程式並不一定使執行時間更快!

Go支援並發

在Golang中使用goroutine和channel來處理並發執行。

並發屬於並行。

更多關於並發、並行的介紹可Google百度深入瞭解。

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.