執行緒和程式
作者:zhonyong
連結:https://www.zhihu.com/question/25532384/answer/81152571
來源:知乎
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
========= 重要的東西出現了========
程式和執行緒就是這樣的背景出來的,兩個名詞不過是對應的CPU時間段的描述,名詞就是這樣的功能。
到此全文結束,再一個總結:
程式和執行緒都是一個時間段的描述,是CPU工作時間段的描述,不過是顆粒大小不同。
連結:https://www.zhihu.com/question/25532384/answer/81152571
來源:知乎
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
不請自來。
看見上面幾位的回答我真的是醉了。說幾句我的理解。
首先來一句概括的總論:程式和執行緒都是一個時間段的描述,是CPU工作時間段的描述。
下面細說背景:
CPU+RAM+各種資源(比如顯示卡,光碟機,鍵盤,GPS, 等等外設)構成我們的電腦,但是電腦的執行,實際就是CPU和相關暫存器以及RAM之間的事情。
一個最最基礎的事實:CPU太快,太快,太快了,暫存器僅僅能夠追的上他的腳步,RAM和別的掛在各匯流排上的裝置完全是望其項背。那當多個任務要執行的時候怎麼辦呢?輪流著來?或者誰優先順序高誰來?不管怎麼樣的策略,一句話就是在CPU看來就是輪流著來。
一個必須知道的事實:執行一段程式程式碼,實現一個功能的過程介紹 ,當得到CPU的時候,相關的資源必須也已經就位,就是顯示卡啊,GPS啊什麼的必須就位,然後CPU開始執行。這裡除了CPU以外所有的就構成了這個程式的執行環境,也就是我們所定義的程式上下文。當這個程式執行完了,或者分配給他的CPU執行時間用完了,那它就要被切換出去,等待下一次CPU的臨幸。在被切換出去的最後一步工作就是儲存程式上下文,因為這個是下次他被CPU臨幸的執行環境,必須儲存。
串聯起來的事實:前面講過在CPU看來所有的任務都是一個一個的輪流執行的,具體的輪流方法就是:先載入程式A的上下文,然後開始執行A,儲存程式A的上下文,調入下一個要執行的程式B的程式上下文,然後開始執行B,儲存程式B的上下文。。。。========= 重要的東西出現了========
程式和執行緒就是這樣的背景出來的,兩個名詞不過是對應的CPU時間段的描述,名詞就是這樣的功能。
- 程式就是包換上下文切換的程式執行時間總和 = CPU載入上下文+CPU執行+CPU儲存上下文
執行緒是什麼呢?
程式的顆粒度太大,每次都要有上下的調入,儲存,調出。如果我們把程式比喻為一個執行在電腦上的軟體,那麼一個軟體的執行不可能是一條邏輯執行的,必定有多個分支和多個程式段,就好比要實現程式A,實際分成 a,b,c等多個塊組合而成。那麼這裡具體的執行就可能變成:
程式A得到CPU =》CPU載入上下文,開始執行程式A的a小段,然後執行A的b小段,然後再執行A的c小段,最後CPU儲存A的上下文。
這裡a,b,c的執行是共享了A的上下文,CPU在執行的時候沒有進行上下文切換的。這裡的a,b,c就是執行緒,也就是說執行緒是共享了程式的上下文環境,的更為細小的CPU時間段。到此全文結束,再一個總結:
程式和執行緒都是一個時間段的描述,是CPU工作時間段的描述,不過是顆粒大小不同。
相關文章
- 程式和執行緒執行緒
- 多執行緒-程式和執行緒的概述執行緒
- 程式和執行緒模型執行緒模型
- 程式和執行緒理解執行緒
- 執行緒和執行緒池執行緒
- 程式和執行緒簡介執行緒
- android程式和執行緒Android執行緒
- Java™ 教程(程式和執行緒)Java執行緒
- 程式和執行緒相關執行緒
- 認識程式和執行緒執行緒
- 漫談程式和執行緒執行緒
- Android 程式和執行緒Android執行緒
- 多執行緒------執行緒與程式/執行緒排程/建立執行緒執行緒
- 程式執行緒篇——程式執行緒基礎執行緒
- 前置知識—程式和執行緒執行緒
- 執行緒和程式的區別執行緒
- Python 中執行緒和程式Python執行緒
- 程式和執行緒的區別執行緒
- 多執行緒和多執行緒同步執行緒
- 程式-程式-執行緒執行緒
- 執行緒和程式基礎以及多執行緒的基本使用(iOS)執行緒iOS
- android程式與執行緒詳解四:執行緒安全和程式間通訊Android執行緒
- 如何查詢一個程式下面的執行緒數(程式和執行緒區別)執行緒
- [短文速讀 -5] 多執行緒程式設計引子:程式、執行緒、執行緒安全執行緒程式設計
- 程式執行緒篇——執行緒切換(下)執行緒
- 執行緒、執行緒與程式、ULT與KLT執行緒
- 程式執行緒篇——執行緒切換(上)執行緒
- Android的執行緒和執行緒池Android執行緒
- 執行緒(一)——執行緒,執行緒池,Task概念+程式碼實踐執行緒
- .NET多執行緒程式設計(1):多工和多執行緒 (轉)執行緒程式設計
- java執行緒之守護執行緒和使用者執行緒Java執行緒
- 執行緒和程式的優缺點執行緒
- nodejs裡面的程式和執行緒NodeJS執行緒
- 「Learning」區別執行緒和程式執行緒
- 程式、執行緒和協程的概念執行緒
- Node.js的執行緒和程式Node.js執行緒
- .NET多執行緒程式設計(4):執行緒池和非同步程式設計 (轉)執行緒程式設計非同步
- Android程式框架:執行緒與執行緒池Android框架執行緒