cpu有時間片,對於cpu來說,所有應用程式都是要使用時間片的使用者,這些使用者從技術語言來說,就是程序。每個程序在啟動後,作業系統都會確定其優先順序,然後放入程序佇列,排隊等候cpu處理(就是我們所說的單核,一核有難,八核圍看哈哈哈)。這種情況很像微控制器,只是裸機的微控制器是一直while乙個程式,加了作業系統的微控制器就是這樣,需要排隊處理。如果cpu處理好上一件事,那麼程序就會得到一些時間片,由於cpu執行非常快,所以即便是乙個程序只得到極少的時間片(比如ms級),仍可以完成程序的任務。程序完成任務或者耗盡時間片後,會被作業系統從cpu中取出,如果仍有任務,則再次進入佇列排隊。
雖然乙個程序獲得cpu「獨寵」的時間極少,但大多數情況,這麼短的時間仍有空餘。為了充分使用這些時間片,執行緒技術就被提出來了。
執行緒仿照程序實現。執行緒也排隊等待cpu時間,但是它等的不是由cpu分配的·時間片,而是由程序獲得時間片後,自己內部進行排隊、分配,最後給出時間片,讓執行緒得以執行。
本質上講,cpu並不知道執行緒的存在,而程序在得到時間片之後,充當了一次「猴子稱霸王」,仿照cpu的方式,把自己的cpu時間片分給程序下的各個執行緒。
注意的是,程序和執行緒能夠實現,其基礎都是cpu超強的計算能力上。如果碰到某些任務特別占用cpu時間片,那程序和執行緒也不能提高效率。
以上主要摘寫自徐野等人編寫的《qt平台體系與應用——qt 5.5+核心方法、技巧與案例》p24,引用請註明**。
程序和執行緒的概念
什麼是程式?什麼是程序?程式和程序有什麼關係?程式是計算機儲存系統中的資料檔案 程序的概念 廣義概念 程式關於某個資料集合一次執行活動 狹義概念 程式被載入到記憶體中執行後得到的程序 程式和程序的區別 程式是硬碟中靜態的檔案 儲存系統中的一段二進位制二進位制表示 程序是記憶體中動態的執行實體 資料段...
多程序和多執行緒的概念
說起多執行緒,那麼就不得不說什麼是執行緒,而說起執行緒,又不得不說什麼是程序。程序可以簡單的理解為乙個可以獨立執行的程式單位,它是執行緒的集合,程序就是有乙個或多個執行緒構成的。而執行緒是程序中的實際執行單位,是作業系統進行運算排程的最小單位。可理解為執行緒是程序中的乙個最小執行單元。那麼多執行緒就...
程序和執行緒的概念 區別和聯絡
程序 process 和執行緒 thread 是作業系統的基本概念,但是它們比較抽象,不容易掌握。最近,我讀到一篇材料,發現有乙個很好的模擬,可以把它們解釋地清晰易懂。程序與執行緒的乙個簡單解釋 在這個簡單易懂的模擬下,了解一下程序和執行緒的巨集觀概念 程序,是併發執行的程式在執行過程中分配和管理資...