有關並行的幾個重要概念

前言

並行是近來軟件工程中常出現的詞,爲啥會出現並行的說法呢?歸根到底是因爲計算機硬件的發展跟不上軟件的進程。
大家應該都知道摩爾定律。如果不知道的可以去查查,看看摩爾定律是什麼。
但是大家知道摩爾定律失效了嗎?
下邊引用頂級計算機科學家唐納德·爾文·克努斯的話說

– 在我看來,這種現象(併發)或多或少是由於硬件設計者
– 已經無計可施了導致的,他們將摩爾定律失效的責任
– 推脫給軟件開發者。

隨着摩爾定律的失效也就有了併發的需要。下邊就來介紹幾個併發的基本概念。

正文

一、同步(synchronous)和異步(asynchronous)

1、同步指發送一個請求,需要等待返回,然後才能夠發送下一個請求,有等待過程;
2、異步是當請求的響應數據完全收到之時,會執行一個指定的回調函數,而在執行異步請求的同時,瀏覽器會正常地執行其他事務的處理,不需要等待。
同步與異步的比較: 異步的好處在於非阻塞(調用線程不會暫停執行去等待子線程完成),因此我們把一些不需要立即使用結果、較耗時的任務設爲異步執行,可以提高程序的運行效率。 簡單來說,就是同步是一個完成後,下一個纔可以再開始,而異步是一個在進行時,下一個也可以開始進行。
在這裏插入圖片描述

二、併發(Concurrency)和並行(Parallelism)

1、並行是指兩個或者多個事件在同一時刻發生;
2、併發是指兩個或多個事件在同一時間間隔發生。
在這裏插入圖片描述

三、 臨界區

臨界區用來表示一種公共資源或者說是共享數據,可以被多個線程使用。但是每一次,只能有一個線程使用它,一旦臨界區資源被佔用,其他線程要想使用這個資源,就必須等待
在這裏插入圖片描述

四、阻塞(Blocking)和非阻塞(Non-Blocking)

阻塞和非阻塞通常用來形容多線程間的相互影響。比如一個線程佔用了臨界區資源,那麼其它所有需要這個資源的線程就必須在這個臨界區中進行等待,等待會導致線程掛起。這種情況就是阻塞。此時,如果佔用資源的線程一直不願意釋放資源,那麼其它所有阻塞在這個臨界區上的線程都不能工作。
非阻塞允許多個線程同時進入臨界區

結束

今天先寫這幾個簡單的概念,有興趣的可以研究研究什麼是
Amdahl定律(阿姆達爾定律)
Gustafson定律(古斯塔夫森)
這兩個定律是關於併發中的重要定律。我可能會在接下來的博客中介紹這兩個定律。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章