1. 程式人生 > >並發 != 並行

並發 != 並行

子類 tom 一起 發送 ngs web 相同 了解 .cn

翻譯:李莉

歡迎訪問網易雲社區,了解更多網易技術產品運營經驗。


我真的很喜歡聽卡爾·休伊特談論計算機科學,他經常重復的是“並發不等於並行”。對我來說,二者沒有什麽區別,坦白說,我從來沒有認真去研究過它。

上個星期,我偶然發現了Rob Pike關於這個話題的博客——《並發不等於並行》,這促使我最終對此做了一些研究。這是我的收獲。

註意:就像生活中的大多數事情一樣,很多人認為兩者之間是沒有區別的。

並發

並發是在相同的時間間隔內執行任務。

這裏的重要細節是,任務不一定同時執行,但是它們可以劃分為交錯在一起的更小的任務。

技術分享圖片


有一個很好的例子,廚房就經常會有這樣並發的情況出現,想象一個廚師在切萵苣的同時還時不時地檢查烤箱裏的東西的烤制進度。他需要停止切萵苣,檢查烤箱,停止檢查烤箱,然後再開始切割,並重復這個過程,直到完成。

如上所見,並發主要與邏輯順序有關,沒有並發,廚師必須等到烤箱中的肉準備好才能切萵苣。

並行

並行,從字面上解釋是在同一時間同時執行任務,顧名思義,它們是並行執行的。

技術分享圖片


回到廚房,現在我們擁有2個廚師,一個負責檢查烤箱,同時另一位負責切萵苣。我們分別把檢查烤箱和切萵苣2件事,同時分派給2個廚師負責。

並行是並發的一個子類:在同時執行多個任務之前,首先必須管理多個任務。

來源

l Brave Clojure: 並發與並行的神聖藝術

l Haskell Wiki

l Rob Pike’s talk

如果你有時間,可以看看卡爾·休伊特和維基百科主持人之間關於並發和並行的幽默交流。


免費領取驗證碼、內容安全、短信發送、直播點播體驗包及雲服務器等套餐

更多網易技術、產品、運營經驗分享請點擊。


相關文章:
【推薦】 Jmeter——參數化的9種方法
【推薦】 微服務監控探索

並發 != 並行