深刻淺出理解同步 /異步/併發/並行/串行

(1)從線程的時效來看:分爲同步和異步node

同步:多個任務狀況下,一個任務A執行結束,才能夠執行另外一個任務B。只存在一個線程。多線程

異步:多個任務狀況下,一個任務A正在執行,同時能夠執行另外一個任務B。任務B不用等待任務A結束才執行。存在多條線程。併發

(2)從線程的執行來看:分爲串行隊列和並行隊列異步

串行隊列:串行隊列的特色是隊列內的線程是一個一個執行,直到結束。async

並行隊列:並行隊列的特色是隊列中全部線程的執行結束時必須是一塊的,隊列中其餘線程執行完畢後,會阻塞當前線程等待隊列中其餘線程執行,而後一塊執行完畢。spa

(3)線程的時效與執行相結合:.net

圖片來源:https://blog.csdn.net/l540675759/article/details/62932901線程

(1)串行同步 
圖1是串行同步的狀況,隊列中的線程依次執行,而且主線程阻塞,等待任務的完成。blog

(2)並行同步 
圖3是並行同步的狀況,隊列中的線程,會一塊兒執行,可是同一時段只能有一個線程執行其餘線程等待,等全部任務執行完,主線程繼續執行。隊列

同步(單線程)的串行並行區別在於:

1.並行增長了等待時間,若是等待時間到了,任務還在執行,那麼,從新設置等待時間,繼續等待,無論等待的時候線程是否有空閒。

2.串行是對線程進行阻塞,一個任務執行完畢,線程再也不阻塞,因此,不存在等待時間。

(3)串行異步 
圖2是串行異步的狀況,隊列中的線程依次執行,同時主線程還在繼續執行。

(4)並行異步 
圖4是並行異步的狀況,隊列中的線程,一塊兒執行,主線程也會繼續執行。

異步(多線程)的串行並行區別在於:

1.串行異步只佔用兩個線程,一個主線程,不會阻塞的線程,一個次線程,執行原理和同步串行同樣。

2.並行異步佔用N個線程,多核CUP能夠同時開啓多條線程供多個任務同時執行,互不干擾。

 

(4)同步的並行即爲併發(常見於es7的async await與node的單線程)。

相關文章
相關標籤/搜索