「Learning」區別執行緒和程式
之前在碼農翻身上看到一篇講解執行緒、程式和協程的文章,覺得寫得很好,所以搬過來學習一下。
原文地址:《一個故事講完程式、執行緒和協程》
Learning Card
階段一:
背景:CPU是稀缺資源,程式必須排隊輪流使用
批處理: 程式A執行完成後,程式B再執行
階段二:
背景:CPU速度越來越快,批處理效率太低,資源浪費太大
程式:一個執行中的程式,它可以暫停下來,暫停的地方即執行到哪一行程式指令了,是這個程式的執行現場,暫停之後再次執行時,從執行現場開始繼續。程式之間是相互交替執行的。
併發:由於CPU的執行速度特別快,雖然程式再不斷切換執行,但看起來像是在同時執行
並行:每個程式能夠佔用一個CPU,真正地同時執行
執行緒:程式中的單一的順序控制流程,是最小的排程單位。每個程式都至少有一個執行緒,如果只有一個執行緒,就是程式本身;也可以同時執行多個執行緒完成不同的工作,成為多執行緒。
階段三:
背景:多執行緒的協作有時會比較麻煩,需要加鎖和執行緒的通知、等待等。
協程:比執行緒更加輕量級,它就像是有多個輕量級的執行緒,它們之間會切換控制權,控制權在誰手裡,誰就執行
協程近幾年在Lua和Python中應用比較多。
為了方便記憶,我整理了一下以上知識點。
一個程式一個程式
程式裡面還有執行緒
一個執行緒叫單執行緒
多個執行緒叫多執行緒
執行緒裡還能有協程
一個CPU配多個程式叫併發
每個程式配一個CPU叫並行
相關文章
- 執行緒和程式的區別執行緒
- 程式和執行緒的區別執行緒
- 程式和執行緒的區別(Linux)執行緒Linux
- 【面試】執行緒程式區別面試執行緒
- 程式與執行緒區別執行緒
- 程式和執行緒的區別與聯絡執行緒
- Java程式和執行緒關係及區別Java執行緒
- java架構-執行緒和程式的區別Java架構執行緒
- Linux中執行緒和程式的區別Linux執行緒
- 如何查詢一個程式下面的執行緒數(程式和執行緒區別)執行緒
- 程式與執行緒的區別執行緒
- php中的執行緒、程式和併發區別PHP執行緒
- 作業系統-執行緒和程式的區別作業系統執行緒
- 作業系統_程式和執行緒的區別作業系統執行緒
- 多執行緒和多程式的區別(小結)執行緒
- 程式、執行緒和協程之間的區別和聯絡執行緒
- 程式、執行緒、纖程之間的區別?執行緒
- Linux執行緒與程式的區別Linux執行緒
- Linux程式與執行緒的區別Linux執行緒
- Java 執行緒和作業系統的執行緒有啥區別?Java執行緒作業系統
- Linux中程式與程式、執行緒的區別!Linux執行緒
- 程式和執行緒有什麼區別?(Process and Threads)程式之間和執行緒之間是如何通訊的?執行緒thread
- Java多執行緒--併發和並行的區別Java執行緒並行
- Java執行緒面試題(04) Java中程式與執行緒的真實區別Java執行緒面試題
- 程式和執行緒執行緒
- 執行緒和程式執行緒
- 轉載_Linux程式與執行緒的區別Linux執行緒
- java執行緒系列---Runnable和Thread的區別Java執行緒thread
- 執行緒狀態&&Wait和sleep的區別?執行緒AI
- 多執行緒-程式和執行緒的概述執行緒
- 對程式、執行緒和協程的理解以及它們的區別執行緒
- 程序、執行緒和協程之間的區別和聯絡執行緒
- 多執行緒,執行緒類三種方式,執行緒排程,執行緒同步,死鎖,執行緒間的通訊,阻塞佇列,wait和sleep區別?執行緒佇列AI
- PHP的執行緒安全與非執行緒安全版本的區別PHP執行緒
- 程式和執行緒模型執行緒模型
- 程式和執行緒理解執行緒
- 程序、執行緒、協程的區別執行緒
- Linux中程式與執行緒的概念以及區別Linux執行緒