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


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

同步:多個任務情況下,一個任務A執行結束,才可以執行另一個任務B。只存在一個線程。

異步:多個任務情況下,一個任務A正在執行,同時可以執行另一個任務B。任務B不用等待任務A結束才執行。存在多條線程。

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

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

並行隊列:並行隊列的特點是隊列中所有線程的執行結束時必須是一塊的,隊列中其他線程執行完畢后,會阻塞當前線程等待隊列中其他線程執行,然后一塊執行完畢。

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

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

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

(2)並行同步 
圖3是並行同步的情況,隊列中的線程,會一起執行,但是同一時段只能有一個線程執行其他線程等待,等所有任務執行完,主線程繼續執行。

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

1.並行增加了等待時間,如果等待時間到了,任務還在執行,那么,重新設置等待時間,繼續等待,不管等待的時候線程是否有空閑。

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

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

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

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

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

2.並行異步占用N個線程,多核CUP可以同時開啟多條線程供多個任務同時執行,互不干擾。

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM