執行緒是cpu排程和分派的基本單位。
程序對於作業系統來說就是乙個任務。
聽起來挺難懂的一句話,我們舉乙個實際例子:比如現在有一條需要被修的路,這個時候只有乙個施工隊要修它,假設是10天能修完;那麼此時程序就是這條需要被修的路(任務),執行緒就是這乙個施工隊【單程序單執行緒】。
如果在修這條路的時候,來了兩個施工隊,各修一半,此時就是多執行緒【多個施工隊】,單程序【乙個任務】。那麼好處也是顯而易見的,多執行緒完成乙個任務時間肯定低於10天,所以多執行緒就是省時間。
換到我們電腦上來說,我們電腦上可以一邊登陸qq,一邊聽**,一邊編輯word等等,同時在執行多個任務,這個就是多程序。而我們的多核cpu就是用來控制程序的,比如六核cpu,可以同時控制六個程序,對於之前的單核cpu來說,這個該怎麼控制呢?對於單核cpu來說,作業系統輪流讓各個任務交替執行,任務1執行0.01秒,然後切換到任務2,任務2執行0.01秒,接著切換到任務3,執行0.01秒……就這樣反覆執行下去。由於我們的分辨速度遠遠達不到這個級別,所以並沒有察覺(就像人類的眼睛無法分辨超過30幀的影象一樣),整個切換過程我們完全分辨不出來。
但是六核的cpu顯然也無法滿足我們的需求,我們同時使用的任務極有可能超過六個,當超過的時候,任務的處理方式與單核cpu一致。
當我們在聽**的時候,【在**這個程序下】我們有可能還在幹別的事情,比如搜尋**,這樣乙個程序就有多個執行緒,對於我們這個比喻來說,擁有兩個執行緒:(1)聽**(2)搜尋**。
同樣,多個執行緒也是需要多核cpu,這樣才是真正的多執行緒,如果只是單核cpu的話,也是只能不斷地切換不同的執行緒來完成。
對於python來說,既支援多程序又支援多執行緒。
執行緒和程序
標準的定義是 程序是執行緒的容器,乙個程序可於乙個或者多個執行緒,它是系統分配資源的基本單位 同乙個程序下,執行緒共享位址空降 已經開啟的檔案 訊號處理函式 報警訊號和其他,執行緒自己只保留程式計數器和棧。但是很遺憾的,這個只是教科書上的定義,實際情況是每個作業系統實現的作業系統特性不同,實現的方法...
程序和執行緒
乙個程序就是當前正在執行的乙個程式,包括程式的暫存器 程式計數器和變數的當前值。不同的程序擁有不同的位址空間。而執行緒可以理解為是程序中的控制流。同乙個程序內也就是說在同乙個位址空間內可以有多個控制流。也就是可以有多個線 程,他們共享位址空間。我們通常將程序視為是資源的集合,程序中有程式的正文 資料...
執行緒和程序
對於求職者,在面試的時候大多都會被問到 你對多執行緒了解麼?給我講講執行緒和程序的區別吧。在unix中,乙個程序可以理解為執行緒 位址空間 檔案描述符 資料,道破現實,其實就相當於老闆和員工,老闆就是程序,員工就是執行緒。老闆需要僱傭若干員工 執行緒 還要有辦公樓 位址空間 還要有若干的辦公裝置 檔...