什麼是程序?
當乙個程式開始執行時,它就是乙個程序,程序包括執行中的程式和程式所使用到的記憶體和系統資源。
而乙個程序又是由多個執行緒所組成的。
什麼是執行緒?
執行緒是程式中的乙個執行流,每個執行緒都有自己的專有暫存器(棧指標、程式計數器等),但**區是共享的,
即不同的執行緒可以執行同樣的函式。
什麼是多執行緒?
多執行緒是指程式中包含多個執行流,即在乙個程式中可以同時執行多個不同的執行緒來執行不同的任務,
也就是說允許單個程式建立多個並行執行的執行緒來完成各自的任務。
多執行緒的好處:
可以提高cpu的利用率。在多執行緒程式中,乙個執行緒必須等待的時候,cpu可以執行其它的執行緒而不是等待,
這樣就大大提高了程式的效率。
多執行緒的不利方面:
執行緒也是程式,所以執行緒需要占用記憶體,執行緒越多占用記憶體也越多;
多執行緒需要協調和管理,所以需要cpu時間跟蹤執行緒;
執行緒之間對共享資源的訪問會相互影響,必須解決競用共享資源的問題;
執行緒太多會導致控制太複雜,最終可能造成很多bug;
多執行緒與單執行緒的區別
生活舉例
你早上上班,正要打卡的時候,手機響了。。你如果先接了**,等接完了,在打卡,就是單執行緒。
如果你一手接**,一手打卡。就是多執行緒。
2件事的結果是一樣的。。你接了**且打了卡。
壞處:增加了排程和管理的開銷,帶來了一些不確定性,需要複雜的同步機制,避免死鎖等等。
好處:一定程度上提高響應速度,在多核的情況下還是更能充分利用cpu資源的。
如果執行緒出現死鎖,唯一能證明的就是應用程式有問題,這並不是執行緒的缺點。
執行緒相對於程序的優點:
1、開銷小
2、資源共享性好。
執行緒相對於程序的缺點:
1、共享資源需要耗費一定的鎖資源,同步相對複雜。
2、乙個執行緒崩潰可能導致整個程序崩潰,這個當然是自己的應用程式有問題
cpu是以時間片的方式為程序分配cup處理時間的,當乙個程序以同步的方式去完成幾件事情時,此程序必須完成了第一件事情以後再做第二件事,如此按順序地向cpu請求完成要做的事情。在此單執行緒的工作模式下,如果把cup看作是一共有100個時間片的話,cpu可能一直都只是花了其中的10個時間片來處理當前程序所要做的事情,只是用到了cpu的10%的時間片,而其他時間都白白浪費了,當然,實際上cpu的工作模式還是做完一件事以後再去做另一件事,只是cup的處理速度非常快,很快就處理完成所請求的情事。
這裡有乙個生活例項可能更好地去理解多執行緒:回去看你女朋友做飯,正常的話她都會把洗好的菜(肉)先放到鍋裡煮,然後一邊洗別的菜或處理別的事情,如:洗碗、收拾桌台準備開飯,人還是乙個人,但她同時做幾件事情,這樣就可以大大地提高效率。總的一句話就是:cpu還是要花同樣多的時間去完成所有的事情,但多執行緒可以讓cpu摻插地同時做多件事情,在視覺上讓使用者覺得計算機在同時幫他處理多件事情,更好地改善使用者體驗。
單執行緒 多執行緒
1.基於python的單執行緒示例 from time import ctime,sleep import time def play video video for i in range 2 print i am playing video s at s video,ctime sleep 5 d...
一 單執行緒與多執行緒
一 多執行緒的例子 公司樓下有一家超市加做 永輝超市 下班了就去裡面買點菜,回去做做自己喜歡的飯菜。如果進去逛一圈,會發現它的收銀台是這樣的 它有好幾個收銀台,每個收銀台有乙個收銀員。付費的時候你可以選擇任意一條 我相信你肯定會選擇人最少的那一條 二 單執行緒的例子 除了這種大中型的超市,下班途中還...
單執行緒和多執行緒
what 1.程序 當乙個程式開始執行時,它就是乙個程序,程序包括執行中的程式和程式所使用到的記憶體和系統資源。2.執行緒 執行緒就是程式中的乙個執行流,每個執行緒都有自己的專有暫存器 棧指標 程式計數器等 但 是可以共享的,即不同的執行緒可以執行相同的函式。3.多執行緒 多執行緒是指程式中包含多個...